Ở đâu / tại sao không có nhật ký cho các dịch vụ systemd người dùng thông thường?


26

Tôi đang cố gắng học cách sử dụng systemd cơ bản và tôi gặp phải một vấn đề khó hiểu với các đơn vị dịch vụ người dùng.

Khi chạy các dịch vụ thông thường với systemctl bắt đầu some.service Tôi có thể tìm thấy nhật ký đầy đủ cho dịch vụ này (bao gồm cả những gì nó đã in cho stdout / stderr, như tôi hiểu) bằng cách chạy sudo Journalctl --unit some.service .

Hãy xem xét ví dụ về dịch vụ chatty.service :

[Service]
ExecStart=/usr/bin/echo "test from chatty.service"

Khi tôi đặt tệp dịch vụ này vào ~ / .config / systemd / user / chatty.service và chạy nó với systemctl --user start chatty.service Tôi không thể tìm thấy đầu ra của nó được gửi đến stdout trong tạp chí, không phải với tạp chí đơn giản hay với tạp chí - -user . Tôi chỉ nhận được đầu ra sau trong cả hai:

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.

tạp chí --unit chatty.service hoàn toàn không trả lại bất cứ điều gì (có hoặc không có --user không tạo ra sự khác biệt).

Trong khi nếu tôi di chuyển cùng một tệp dịch vụ sang / etc / systemd / system và chạy nó với sudo systemd start chatty.service thì tôi nhận được kết quả đầu ra sau khi tôi chạy sudo tạp chí --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

Có vẻ như đơn vị dịch vụ người dùng không được tích hợp tốt bằng cách nào đó, điều này có được mong đợi không, tôi có thiếu điều gì không hay đó là một lỗi?

Tôi đang chạy openSUSE 13.1 x86-64, với systemd 208 (cài đặt mặc định).


Cùng systemd 208 ở đây trên Arch Linux. Bạn có thể sử dụng journalctl --user --user-unit chattyđể nhận các thông báo bắt đầu / dừng từ systemd, nhưng không phải là những gì quá trình echo xuất ra, ít nhất là trong trường hợp của tôi. Bạn có thể nhận được thông báo lặp lại với journalctl --userhoặc sử dụng một số bộ lọc khác.
lilydjwg

Câu trả lời:


20

Sử dụng --user-unittùy chọn và trong trường hợp của bạn ...

journalctl --user-unit chatty

Bạn có nhận được thông báo xuất bản "kiểm tra từ chatty.service" trong đầu ra nhật ký không, hay chỉ là "Bắt đầu chatty.service ..." và "Bắt đầu chatty.service." tin nhắn?
Quantumboredom

Có, tôi cũng có thể nhận được đầu ra từ quy trình (tức là thông báo "kiểm tra từ chatty.service").
elynnaie

Đó là những gì tôi đã mong đợi, nhưng tôi không thấy nó ở đây. Tôi có thể hỏi bạn đang chạy hệ điều hành nào (với phiên bản) không?
Quantumboredom

Arch Linux 3.13.7-1. phiên bản systemd 212.
elynnaie

2
Tôi thấy đầu ra trong tạp chí chính bây giờ. Nhưng khi tôi thử chạy journalctl --usertôi nhận được No journal files were found.journalctl --user-unit chattynó không hoạt động với tôi.
CMCDragonkai

6

Necroposting, nhưng tôi đã đối mặt và giải quyết vấn đề tương tự ngày hôm nay. Hầu hết có lẽ journalctl --user-unit chattykhông làm việc cho bạn vì bạn chạy nó từ root. Tuy nhiên, mỗi man journalctl, --user-unitbộ lọc đăng nhập các mục không chỉ bởi _SYSTEMD_USER_UNIT=, mà còn bởi _UID=, và không có chattydịch vụ nào với uid gốc, vì vậy không có mục nào được tìm thấy.

Có khả năng là bạn cũng đã cố chạy journalctl --user-unit chattytừ người dùng thông thường của mình, nhưng đã nhận No journal files were found. Điều này xảy ra bởi vì (và Tất cả người dùng được cấp quyền truy cập vào các tạp chí riêng cho mỗi người dùng của họ man journalctlcó thể gây nhầm lẫn ở đây) vào năm 2018 trên tạp chí Debian 9 của tôi vẫn không tồn tại theo mặc định ( Storage=autotrong /etc/systemd/journald.conf/var/log/journal/không tồn tại) và không tồn tại) Chế độ liên tục journaldkhông hỗ trợ chia tách nhật ký, vì vậy tất cả các nhật ký kết thúc ở một vị trí /run/log/journalmặc dù thực tế là chia tách được bật theo mặc định - xem SplitModetrong man journald.conf. Cho phép kiên trì sửa lỗi này.

TL; DR: enable persistency bằng cách đặt Storage=persistentđể /etc/systemd/journald.confvà tải lại journald với sudo systemctl restart systemd-journald.

Ngoài ra, tìm kiếm với sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

Một số chi tiết khác có tại https://lists.freedesktop.org/archives/systemd-devel/2016-Oc/10/037554.html


2
Cảm ơn bạn. Tôi đã nhận được No journal files were opened due to insufficient permissions.một "gợi ý" khó hiểu về việc thiết lập quyền, nhưng tôi không cần phải đặt quyền vì tôi đang cố truy cập nhật ký người dùng, không phải nhật ký hệ thống. Sửa chữa của bạn đã làm việc. Cảm ơn nhiều.
Rolf

3

Cho đến systemd v230 , bạn phải sử dụng --user-unitcờ ít trực quan hơn để xem nhật ký cho đơn vị người dùng của bạn:

journalctl --user-unit chatty

Kể từ systemd v230, giờ đây bạn có thể kết hợp các cờ --user--unitcờ như bạn mong đợi:

journalctl --user --unit chatty

Các --user --unitcú pháp được hỗ trợ kể từ khi Ubuntu 17.10.


2
Tôi không cung cấp tính năng "--user --unit" hoạt động trên v230 ... đang chạy v 232 tại đây và tính năng này không hoạt động
LeGEC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.