systemctl --user

/usr/lib/systemd/user/ 这个目录下怎么还有 service

在 Ubuntu 和其他使用 systemd 的 Linux 发行版中,/usr/lib/systemd/user/ 目录用于存放用户级别的 systemd 服务单元文件。这些服务单元文件由 systemd 的用户实例管理,而不是由系统实例管理。用户级别的 systemd 实例允许每个用户启动和管理自己的服务,而不需要系统级别的权限。

用户级别 systemd 服务的用途

用户级别的 systemd 服务主要用于管理用户会话相关的服务和守护进程,例如:

  • 图形界面应用程序的后台服务。
  • 用户特定的守护进程(如 obexd、音频服务等)。
  • 用户会话登录时自动启动的应用程序。

目录结构

  • /usr/lib/systemd/user/:存放由系统包提供的用户级别的服务单元文件。这些文件通常由软件包管理器安装和更新。
  • ~/.config/systemd/user/:用户自定义的服务单元文件,可以覆盖系统提供的服务单元文件。

自定义和修改用户级别的 systemd 服务

步骤 1: 复制服务单元文件

要自定义服务单元文件,可以将其从 /usr/lib/systemd/user/ 复制到 ~/.config/systemd/user/:

mkdir -p ~/.config/systemd/user
cp /usr/lib/systemd/user/obex.service ~/.config/systemd/user/

步骤 2: 编辑服务单元文件

使用文本编辑器编辑复制后的服务单元文件:

nano ~/.config/systemd/user/obex.service

在文件中修改 ExecStart 行或其他配置项。例如:

[Service]
ExecStart=/usr/bin/obexd -n -r /path/to/share

步骤 3: 重新加载用户级别的 systemd 配置并重启服务

systemctl --user daemon-reload
systemctl --user restart obex.service

步骤 4: 检查服务状态

systemctl --user status obex.service

什么是用户实例,什么是系统实例?

在 systemd 的架构中,存在两种不同的实例管理系统:系统实例(system instance)和用户实例(user instance)。它们分别用于管理系统级别和用户级别的服务和守护进程。

系统实例 (System Instance)

系统实例是系统启动时由 init 进程启动的 systemd 实例,负责管理整个系统的服务和守护进程。这些服务通常涉及系统的核心功能,如网络、文件系统、设备管理等。系统实例的服务文件存放在 /lib/systemd/system/ 和 /etc/systemd/system/ 目录中。

  • 服务文件路径: /lib/systemd/system/, /etc/systemd/system/
  • 作用: 管理系统范围内的服务,如网络服务、硬件驱动、系统守护进程等。
  • 启动命令: systemctl start
  • 服务示例: network.service, cron.service, sshd.service

用户实例 (User Instance)

用户实例是为每个用户会话启动的 systemd 实例,负责管理与该用户会话相关的服务和守护进程。用户实例的服务文件存放在 /usr/lib/systemd/user/ 和 ~/.config/systemd/user/ 目录中。

  • 服务文件路径: /usr/lib/systemd/user/, ~/.config/systemd/user/
  • 作用: 管理用户会话范围内的服务,如桌面环境服务、用户级别的守护进程等。
  • 启动命令: systemctl --user start
  • 服务示例: obex.service, pulseaudio.service, gvfs.service

启动用户实例

系统实例会在用户登录时自动启动用户实例。用户实例的 systemd 服务管理命令与系统实例类似,但需要加上 --user 选项:

# 启动用户级服务
systemctl --user start <service>

# 停止用户级服务
systemctl --user stop <service>

# 重启用户级服务
systemctl --user restart <service>

# 查看用户级服务状态
systemctl --user status <service>

# 重新加载用户级服务单元文件
systemctl --user daemon-reload

实例

nvidia@nvidia-desktop:~$ ps -ef | grep systemd
gdm 7518 1 0 20:37 ? 00:00:00 /lib/systemd/systemd --user
nvidia 10343 1 0 20:47 ? 00:00:01 /lib/systemd/systemd --user

总结

/usr/lib/systemd/user/ 目录用于存放系统范围内的用户级别服务单元文件,允许每个用户在其会话中启动和管理服务。通过复制和编辑这些文件到用户的配置目录,可以进行自定义配置以满足特定需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li-Yongjun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值