Dans un serveur CentOS 7, je veux obtenir la liste des unités sélectionnables pour lesquelles journalctl
peuvent produire des journaux. Comment puis-je changer le code suivant pour y parvenir?
journalctl --output=json-pretty | grep -f UNIT | sort -u
Dans le terminal CentOS 7, le code ci-dessus se produit grep: UNIT: No such file or directory
.
ÉDITER:
Le programme java suivant se termine sans imprimer aucune sortie du grep souhaité. Comment puis-je changer les choses pour que le programme java fonctionne en plus de la version du terminal?
String s;
Process p;
String[] cmd = {"journalctl --output=json-pretty ","grep UNIT ","sort -u"};
try {
p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("exit: " + p.exitValue()+", "+p.getErrorStream());
BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = br2.readLine()) != null)
System.out.println("error line: " + s);
p.waitFor();
p.destroy();
} catch (Exception e) {}
grep -F
Réponses:
journalctl
peut afficher des journaux pour toutes les unités - si ces unités écrivent dans le journal, c'est différent.Pour répertorier toutes les unités disponibles et donc toutes disponibles pour
journalctl
utilisation:En ce qui concerne votre code java, afin de faire fonctionner les tuyaux,
Runtime.exec()
vous pouvez soit placer la commande dans un script et appeler le script, soit utiliser un tableau de chaînes, quelque chose comme:ou:
la source
list-unit-files
n'affiche pas les unités instanciées et les unités transitoires.man journalctl
dit:Vous pouvez donc exécuter:
pour obtenir la liste des unités sélectionnables pour lesquelles
journalctl
peuvent produire des journaux(par défaut, seul root et les utilisateurs qui sont membres de quelques groupes spéciaux sont autorisés à accéder à la revue du système et les journaux d'autres utilisateurs. Les membres des groupes
systemd-journal
,adm
etwheel
peut lire tous les fichiers de journal.)la source
sudo journalctl --field _SYSTEMD_UNIT
. Mais sinon merci et +1 pour avoir ajouté des informations.sudo
vous pouvez l'utiliser,journalctl
mais vous n'obtenez qu'une petite liste d'unités directement liées à la session de votre utilisateur.systemd 219
elle ne supporte pas les argumentslist-unit-files --all
fournis dans la réponse actuellement acceptée.