我正在尝试学习基本的systemd用法,并且遇到了用户服务单元令人困惑的问题。
当使用systemctl start来运行常规服务时,我可以通过运行sudo journalctl --unit some.service来查找该服务的完整日志(包括据我了解的打印到stdout / stderr的内容)。
考虑示例服务文件chatty.service:
[Service]
ExecStart=/usr/bin/echo "test from chatty.service"
当我将此服务文件放置在〜/ .config / systemd / user / chatty.service中并使用systemctl --user start chatty.service运行它时,无论是使用纯journalctl还是使用journalctl,都无法在journalctl中找到发送到stdout的输出- -用户。两种方式我都只得到以下输出:
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.
而且journalctl --unit chatty.service根本不返回任何内容(带或不带--user都没有区别)。
虽然如果我将相同的服务文件移动到/ etc / systemd / system并使用sudo systemd start chatty.service运行它,那么当我运行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
用户服务单元似乎没有以某种方式集成在一起,这是预期的吗?我是否缺少某些东西?还是一个错误?
我正在运行带有systemd 208的openSUSE 13.1 x86-64(默认安装)。
journalctl --user --user-unit chatty
从systemd获取这些开始/停止消息,但至少在我的情况下,不能从echo过程中获得输出。您可以使用journalctl --user
或使用其他过滤器来获取回显的消息。