我有一个交互式 shell 应用程序。我希望此应用程序作为服务运行。为了能够在服务运行时访问 shell,我认为最好将该服务作为启动应用程序的屏幕会话来启动。
但这会产生一个问题。服务日志实际上并未显示我在屏幕会话中可以看到的任何输出。
如何将屏幕会话输出传输到服务日志?
[Unit]
Description=CSGO Server
After=network.target
[Service]
Type=forking
WorkingDirectory=/home/birger/csgo-server
ExecStartPre=-/usr/bin/screen -S ${SCREEN_TITLE} -X kill
ExecStart=/usr/bin/screen -dmS ${SCREEN_TITLE} -O -l /usr/bin/bash\
-c /home/birger/csgo-server/update-and-start
ExecStop=/usr/bin/screen -S ${SCREEN_TITLE} -p 0 -X stuff "exit^M"
Environment=SCREEN_TITLE=csgo
RemainAfterExit=false
Restart=always
RestartSec=5s
SuccessExitStatus=1
[Install]
WantedBy=default.target
发起者
systemctl --user start csgo.service
查看日志
journalctl -u csgo.service
输出(为空白):
-- Logs begin at Sat 2020-02-22 14:17:45 CET, end at Mon 2021-08-16 15:06:35 CEST. --
-- No entries --
但如果我将其附加到屏幕上,我可以看到实际上有很多文本,只是没有显示在服务日志中。