![启动屏幕会话作为服务,如何将屏幕会话输出(返回)传输到服务日志?](https://linux22.com/image/769553/%E5%90%AF%E5%8A%A8%E5%B1%8F%E5%B9%95%E4%BC%9A%E8%AF%9D%E4%BD%9C%E4%B8%BA%E6%9C%8D%E5%8A%A1%EF%BC%8C%E5%A6%82%E4%BD%95%E5%B0%86%E5%B1%8F%E5%B9%95%E4%BC%9A%E8%AF%9D%E8%BE%93%E5%87%BA%EF%BC%88%E8%BF%94%E5%9B%9E%EF%BC%89%E4%BC%A0%E8%BE%93%E5%88%B0%E6%9C%8D%E5%8A%A1%E6%97%A5%E5%BF%97%EF%BC%9F.png)
我有一个交互式 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 --
但如果我将其附加到屏幕上,我可以看到实际上有很多文本,只是没有显示在服务日志中。