systemd 服务输出到终端/pty

vyo*_*yom 7 stdout systemd 18.04

我无法弄清楚要StandardOutput=为单元文件 ( .service)传递什么选项,我想在连接的终端上从服务启动的位置显示一些消息!( console/tty好像不是我想要的)

也许可以更改/etc/systemd/system.conf全局默认值DefaultStandardOutput=journal,但我不想这样做!我只对显示我的单元文件中的一些进度/启动消息感兴趣(例如systemd-run -P

我在 Ubuntu 18.04.2

# systemd --version
systemd 237
Run Code Online (Sandbox Code Playgroud)

小智 1

您可以查看https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=

如果我正确理解问题,您希望服务将状态输出到 tty/控制台?请记住,当服务启动时,systemd 会处理默认文件描述符。

您可以使用文件来存储状态并在那里查询。


Gry*_*ryu 0

编辑您想要使用 systemd 运行的脚本,并将其添加| logger到您想要输出到 syslog 的命令:

\n\n
#!/bin/bash\n/usr/bin/ps aux | /usr/bin/grep gnome > /home/user/test/psoutput.txt\n/usr/bin/date | logger\necho "This is terminal output" | logger\n/usr/bin/date >> /home/user/test/psoutput.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

的输出$ sudo journalctl -u pstofile -f是:

\n\n
\xd0\xb1\xd0\xb5\xd1\x80 09 13:33:42 lenovo systemd[1]: Started ps aux to file.\n\xd0\xb1\xd0\xb5\xd1\x80 09 13:33:42 lenovo root[8491]: \xd0\xbf\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd1\x96\xd0\xbb\xd0\xbe\xd0\xba, 9 \xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb7\xd0\xbd\xd1\x8f 2020 13:33:42 +0200\n\xd0\xb1\xd0\xb5\xd1\x80 09 13:33:42 lenovo root[8493]: This is terminal output\n\xd0\xb1\xd0\xb5\xd1\x80 09 13:33:42 lenovo systemd[1]: pstofile.service: Succeeded.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 systemd 服务文件包含以下内容:

\n\n
[Unit]\nDescription=ps aux to file\nAfter=systemd-user-sessions.service\n\n[Service]\nType=simple\nRestart=always\nRestartSec=5\nExecStart=/home/user/test/pstofile.sh\nStandardInput=journal+console\nStandardOutput=journal+console\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n