如何使用 /usr/lib/systemd/ 中的 systemd 服务?

如何使用 /usr/lib/systemd/ 中的 systemd 服务?

软件包管理器(在/usr/lib/systemd/)中安装的服务应该如何在 Debian (9.5) 中使用?

我可以看到安装在 中的大量服务/usr/lib/systemd/user,但这些服务无法通过正常systemctl status my-service命令获得。我是否应该手动将我想要使用的服务复制到/etc/systemd/user/

答案1

除了系统范围的服务之外,Systemd 还允许您为每个用户提供特定于用户的服务。如果添加该标志,这些可以通过常规 systemctl 命令(stopstartstatusedit、 ...)进行管理。例如,如果您有,系统范围的服务管理器不知道这一点,但用户的服务管理器知道:enable--user/usr/lib/systemd/user/syncthing.service

↪ ls /usr/lib/systemd/user/syncthing.service 
Permissions Size User Date Modified Name
.rw-r--r--   285 root 13 Jun 20:40  /usr/lib/systemd/user/syncthing.service
↪ systemctl status syncthing                                                                                     
Unit syncthing.service could not be found.
↪ systemctl --user status syncthing               
● syncthing.service - Syncthing - Open Source Continuous File Synchronization
   Loaded: loaded (/usr/lib/systemd/user/syncthing.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-24 17:10:22 CEST; 2 weeks 3 days ago
     Docs: man:syncthing(1)
 Main PID: 815 (syncthing)
   CGroup: /user.slice/user-1000.slice/[email protected]/syncthing.service
           └─815 /usr/bin/syncthing -no-browser -no-restart -logflags=0

systemctl status --user可用于列出当前用户的所有当前活动单位。

如果用户无法写入,也可以定义自己的单位,/usr/lib/systemd/user或者管理员可以定义系统本地的用户单位,方法是将它们添加到为此目的列出的目录之一系统单元(5):

  • 〜/.config/systemd/用户/
  • /etc/systemd/用户/
  • $XDG_RUNTIME_DIR/systemd/用户/
  • 〜/.local/share/systemd/user/
  • ……

答案2

用于systemctl --user status my-service用户服务。用户服务也显示在user.sliceofsystemctl status命令下。您还需要--user标记来启动/停止/启用/禁用这些服务,因为它们在正常用户会话下运行并且不需要 root 访问权限。阅读更多内容https://wiki.archlinux.org/index.php/Systemd/User

相关内容