我正在尝试编写一个在后台启动 Xvfb 的 systemd 脚本。
在控制台中执行此操作当然没有附加“&”的问题。
但我尝试编写一个 systemd 脚本,当我手动启动它时
service xvfb start
似乎它永远不会发送到后台,因为运行此命令后永远不会出现提示。
这是脚本:
[Unit]
Description=Xvfb
After=tomcat.service
[Timer]
# Time to wait after booting before we run first time
OnBootSec=1min
[Service]
Type=forking
User=test
Group=test
ExecStart=/usr/bin/Xvfb :99
ExecStop=/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
我是否需要使用另一种类型?
答案1
Type=forking
适用于自行分叉和后台运行的进程 - 又称旧式守护进程。这会导致 systemd等待让进程在后台自行退出并通过 pid 文件或其他方式跟踪子进程。您的应用程序永远不会退出,因此 systemd 会继续等待。
相反,你应该使用
Type=simple
适用于本身没有背景的应用程序。这会导致 systemd 守护进程跟踪该进程,但会立即从systemctl
有效的后台返回。 Simple 是默认类型,因此Type
如果您愿意,可以完全省略该标志。