Saya mencoba mempelajari penggunaan systemd dasar dan saya mengalami masalah membingungkan dengan unit layanan pengguna.
Ketika menjalankan layanan biasa dengan systemctl memulai some.service, saya dapat menemukan log lengkap untuk layanan ini (termasuk apa yang telah dicetak ke stdout / stderr, seperti yang saya mengerti) dengan menjalankan sudo journalctl --unit some.service .
Pertimbangkan contoh servicefile chatty.service :
[Service]
ExecStart=/usr/bin/echo "test from chatty.service"
Ketika saya menempatkan file layanan ini di ~ / .config / systemd / user / chatty.service dan menjalankannya dengan systemctl --user start chatty.service saya tidak dapat menemukan outputnya dikirim ke stdout di journalctl, baik dengan jurnal biasa atau dengan journalctl - -pengguna . Saya hanya mendapatkan output berikut di keduanya:
Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Starting chatty.service...
Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Started chatty.service.
Dan jurnalctl --unit chatty.service tidak mengembalikan apa pun (dengan atau tanpa --user tidak ada bedanya).
Sementara jika saya memindahkan file layanan yang sama ke / etc / systemd / system dan menjalankannya dengan sudo systemd mulai chatty.service saya kemudian mendapatkan output berikut ketika saya menjalankan sudo journalctl --unit chatty.service :
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.
Jan 15 19:28:08 qbd-x230-suse.site echo[27098]: test from chatty.service
Sepertinya unit layanan pengguna entah bagaimana tidak terintegrasi dengan baik, apakah ini diharapkan, apakah saya melewatkan sesuatu atau itu bug?
Saya menjalankan openSUSE 13.1 x86-64, dengan systemd 208 (instalasi default).
journalctl --user --user-unit chatty
untuk mendapatkan pesan mulai / hentikan dari systemd, tetapi bukan apa yang dihasilkan oleh proses gema, setidaknya dalam kasus saya. Anda bisa mendapatkan pesan yang digaungkan denganjournalctl --user
atau menggunakan beberapa filter lain.Jawaban:
Gunakan
--user-unit
opsi, dan dalam kasus Anda ...sumber
journalctl --user
saya mendapatkanNo journal files were found.
Danjournalctl --user-unit chatty
tidak berhasil untuk saya.Necroposting, tetapi saya menghadapi dan menyelesaikan masalah yang sama hari ini. Kemungkinan besar
journalctl --user-unit chatty
tidak berhasil untuk Anda karena Anda menjalankannya dari root. Namun, perman journalctl
,--user-unit
memfilter entri log tidak hanya oleh_SYSTEMD_USER_UNIT=
, tetapi juga oleh_UID=
, dan tidak adachatty
layanan dengan uid root, sehingga tidak ada entri yang ditemukan.Kemungkinan Anda juga telah mencoba lari
journalctl --user-unit chatty
dari pengguna biasa, tetapi berhasilNo journal files were found
. Hal ini terjadi karena (dan Semua pengguna diberikan akses ke jurnal pribadi per-pengguna mereka dariman journalctl
dapat membingungkan di sini) pada tahun 2018 pada jurnal Debian 9 saya masih tidak persisten secara default (Storage=auto
dalam/etc/systemd/journald.conf
, dan/var/log/journal/
tidak ada), dan di non- mode persistenjournald
tidak mendukung pemisahan log, sehingga semua log berakhir di satu tempat/run/log/journal
meskipun ada fakta bahwa pemisahan diaktifkan secara default - lihatSplitMode
diman journald.conf
. Mengaktifkan persistensi memperbaiki ini.TL; DR: mengaktifkan persistensi dengan menempatkan
Storage=persistent
ke/etc/systemd/journald.conf
dan reload journald dengansudo systemctl restart systemd-journald
.Atau, cari dengan
sudo journalctl _SYSTEMD_USER_UNIT=chatty.service
Beberapa detail lainnya ada di https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html
sumber
No journal files were opened due to insufficient permissions.
"petunjuk" membingungkan tentang pengaturan izin, tetapi saya tidak harus mengatur izin karena saya mencoba mengakses log pengguna, bukan log sistem. Perbaikan Anda berhasil. Terimakasih banyak.Hingga systemd v230 , Anda harus menggunakan
--user-unit
flag yang kurang intuitif untuk melihat log untuk unit pengguna Anda:Sejak systemd v230, Anda sekarang dapat menggabungkan
--user
dan--unit
menandai seperti yang Anda harapkan:The
--user --unit
sintaks didukung sejak Ubuntu 17.10.sumber