Na serwerze CentOS 7 chcę uzyskać listę jednostek do wyboru, dla których journalctl
można tworzyć dzienniki. Jak mogę zmienić następujący kod, aby to osiągnąć?
journalctl --output=json-pretty | grep -f UNIT | sort -u
W terminalu CentOS 7 powstaje powyższy kod grep: UNIT: No such file or directory
.
EDYTOWAĆ:
Następujący program Java kończy działanie bez drukowania danych wyjściowych z żądanego grep. Jak mogę zmienić rzeczy, aby program Java działał oprócz wersji terminalowej?
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
Odpowiedzi:
journalctl
może wyświetlać logi dla wszystkich jednostek - czy te jednostki zapisują do dziennika to inna sprawa.Aby wyświetlić listę wszystkich dostępnych jednostek, a zatem wszystkich dostępnych
journalctl
do użycia:Jeśli chodzi o kod Java, w celu umożliwienia współpracy potoków
Runtime.exec()
możesz albo umieścić polecenie w skrypcie i wywołać skrypt, albo użyć tablicy ciągów, na przykład:lub:
źródło
list-unit-files
nie pokazuje jednostek utworzonych i jednostek przejściowych.man journalctl
mówi:Możesz więc uruchomić:
aby uzyskać listę jednostek do wyboru, dla których
journalctl
można tworzyć dzienniki(domyślnie tylko root i użytkowników, którzy są członkami kilku grup specjalnych mają dostęp do dziennika systemu i dzienniki innych użytkowników. Członkowie grupy
systemd-journal
,adm
iwheel
może odczytywać wszystkie pliki dziennika).źródło
sudo journalctl --field _SYSTEMD_UNIT
. Ale poza tym dziękuję i +1 za dodanie wglądu.sudo
możesz użyć,journalctl
ale dostajesz tylko niewielką listę jednostek, które są bezpośrednio związane z sesją użytkownika.systemd 219
nie obsługuje argumentówlist-unit-files --all
podanych w obecnie akceptowanej odpowiedzi.