Ubuntu 15.04 systemd 与 upstart

Ubuntu 15.04 systemd 与 upstart

与之前的版本不同,Ubuntu 15.04 现在使用systemd而不是upstart。为了在启动时启动程序,我总是在 中创建 conf 文件/etc/init/。它们看起来像这样:

start on login-session-start
script
/usr/bin/x11vnc -auth /var/run/lightdm/root/:0  -display :0  -rfbauth /etc/x11vnc.pass  -rfbport 5900  -noxrecord -noxfixes -noxdamage -forever -bg  -o /var/log/x11vnc.log
end script

不幸的是,这在 Ubuntu 15.04 中不再起作用,我试图找到一个与此 conf 文件等效的、与 systemd 一起运行的文件。尽管互联网上还没有这么多资源。

在启动时启动上述 conf 文件需要什么?upstart 和 systemd 之间有转换器吗?

答案1

如果需要,您可以创建一个.service执行相同操作的 systemd 文件。.service上述命令的基本 systemd 文件可能如下所示:

[Unit]
Description=Start VNC server
Requires=lightdm.service
After=lightdm.service

[Service]
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0  -display :0  -rfbauth /etc/x11vnc.pass  -rfbport 5900  -noxrecord -noxfixes -noxdamage -forever

[Install]
WantedBy=graphical.target

注意事项:

  • 因为此服务依赖于 lightdm 的启动,所以我添加了一个Requires=lightdm.service。这意味着如果请求启动此服务,则lightdm.service也会要求启动,但如果lightdm.service启动失败,则不会要求启动此服务。此外,After=lightdm.service需要 ,以便此服务在 lightdm.service 启动完成后启动。
  • 正在运行的命令没有-bg指定。在 systemd 中,最好让服务保持在前台,以便 systemd 知道它们正在运行。请注意,它可以为进入后台的服务指定 PID 文件。
  • WantedBy=graphical.target指定作为启动 GUI 的一部分,这也应该启动。

要安装此文件以便服务以 root 身份运行,请将此文件添加到 中/etc/systemd/system。然后,运行sudo systemctl enable <filename>(其中<filename>是服务文件的名称/etc/systemd/system)。应该在 中创建一个符号链接/etc/systemd/system/graphical.target.wants/。重新启动后,当您运行 时systemctl status <filename>,您应该会看到该服务已被识别但尚未启动。

请注意,/etc/systemd/system/是用于系统管理员(您)添加的系统范围服务。/lib/systemd/system/是用于软件包安装的系统范围服务。您无需创建符号链接/lib/systemd/system/即可加载服务。下表(取自systemd.unit手册页)描述了与系统服务相关的每个位置的用途(用户服务有单独的路径):

   ┌────────────────────┬─────────────────────────────┐
   │Path                │ Description                 │
   ├────────────────────┼─────────────────────────────┤
   │/etc/systemd/system │ Local configuration         │
   ├────────────────────┼─────────────────────────────┤
   │/run/systemd/system │ Runtime units               │
   ├────────────────────┼─────────────────────────────┤
   │/lib/systemd/system │ Units of installed packages │
   └────────────────────┴─────────────────────────────┘

相关内容