Di server CentOS 7, saya ingin mendapatkan daftar unit yang journalctl
dapat dipilih yang dapat menghasilkan log. Bagaimana saya bisa mengubah kode berikut untuk mencapai ini?
journalctl --output=json-pretty | grep -f UNIT | sort -u
Di terminal CentOS 7, kode di atas menghasilkan grep: UNIT: No such file or directory
.
EDIT:
Program java berikut berakhir tanpa mencetak keluaran apa pun dari grep yang diinginkan. Bagaimana saya bisa mengubah banyak hal sehingga program java bekerja di samping versi 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
Jawaban:
journalctl
dapat menampilkan log untuk semua unit - apakah unit ini menulis ke log adalah masalah yang berbeda.Untuk membuat daftar semua unit yang tersedia dan karenanya semua tersedia untuk
journalctl
digunakan:Untuk kode java Anda, untuk membuat pipa berfungsi dengan baik
Runtime.exec()
Anda bisa memasukkan perintah dalam skrip dan memanggil skrip atau menggunakan array string, seperti:atau:
sumber
list-unit-files
tidak menunjukkan unit instantiated dan transient unit.man journalctl
mengatakan:Jadi, Anda dapat menjalankan:
untuk mendapatkan daftar unit yang
journalctl
dapat dipilih yang dapat menghasilkan log(secara default, hanya root dan pengguna yang merupakan anggota dari kelompok-kelompok khusus beberapa diberikan akses ke jurnal sistem dan jurnal dari pengguna lain. Anggota kelompok
systemd-journal
,adm
danwheel
dapat membaca semua file jurnal.)sumber
sudo journalctl --field _SYSTEMD_UNIT
. Tetapi sebaliknya terima kasih dan +1 untuk menambahkan wawasan.sudo
Anda dapat menggunakanjournalctl
tetapi Anda hanya mendapatkan daftar kecil unit yang terkait langsung dengan sesi pengguna Anda.systemd 219
tidak mendukung argumenlist-unit-files --all
yang disediakan dalam jawaban yang diterima saat ini.