我有一个程序可以fork()
运行并退出。它的子进程保持运行大约 50 秒,同时每 5 秒打印一次消息。当我从终端运行时,它按预期运行,父进程退出,然后子进程打印 10 条消息并退出。然后我创建了一个systemd
服务单元,仅包含以下内容:
[Unit]
Description=Program that forks
Documentation=https://program5.example.com
[Service]
Type=forking
ExecStart=/root/fork
显然systemd
是有效的,因为它显示主进程处于活动状态,直到子进程退出,但是检查journalctl
甚至使用 来查看程序systemctl status
,屏幕上的子消息仅在子进程退出且进程死亡后才显示。这是为什么?