На сервере CentOS 7 я хочу получить список выбираемых модулей, для которых journalctl
можно создавать журналы. Как я могу изменить следующий код для достижения этой цели?
journalctl --output=json-pretty | grep -f UNIT | sort -u
В терминале CentOS 7, приведенный выше код производит grep: UNIT: No such file or directory
.
РЕДАКТИРОВАТЬ:
Следующая Java-программа завершается без вывода какого-либо вывода из требуемого grep. Как я могу изменить вещи, чтобы Java-программа работала в дополнение к терминальной версии?
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
Ответы:
journalctl
может отображать журналы для всех блоков - вопрос о том, записывают ли эти блоки в журнал другой вопрос.Чтобы перечислить все доступные единицы и, следовательно, все доступные для
journalctl
использования:Что касается вашего Java-кода, для того, чтобы заставить работать каналы,
Runtime.exec()
вы можете либо поместить команду в скрипт и вызвать скрипт, либо использовать строковый массив, что-то вроде:или:
источник
list-unit-files
не показывает инстанцированные единицы и переходные единицы.man journalctl
говорит:Итак, вы можете запустить:
получить список выбираемых единиц, для которых
journalctl
можно создавать журналы(по умолчанию, только корню и пользователям , которые являются членами нескольких специальных групп получают доступ к журналу системы и журналы других пользователей. Члены групп
systemd-journal
,adm
иwheel
может читать файлы журнал.)источник
sudo journalctl --field _SYSTEMD_UNIT
. Но в остальном спасибо и +1 за добавление понимания.sudo
можете использовать,journalctl
но вы получите только крошечный список единиц, которые непосредственно связаны с сессией вашего пользователя.systemd 219
он не поддерживает аргументы,list-unit-files --all
представленные в принятом в настоящее время ответе.