Debian:使用 systemd 脚本启动 Xvfb 并发送到后台

Debian:使用 systemd 脚本启动 Xvfb 并发送到后台

我正在尝试编写一个在后台启动 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如果您愿意,可以完全省略该标志。

相关内容