我希望能完全使用普通用户身份, 完成一个 systemd services 的添加;
要求
- 不使用 root 或 sudo;
- 不需要进入到 /etc 下的目录;
- 做到用 systemctl start service_name 的效果;
我搜索了些资料, 提到将服务单元文件放置在 ~/.config/systemd/user/ 路径下;
但是 systemctl 找不到单元文件;
使用 systemctl --user 时,会报错: Failed to get D-Bus connection: No such file or directory;
想请教应该怎么操作, 感谢支持!!
最后还是自己来回答这个问题吧。
centos7 下的普通用户不能创建自己的 systemd 服务,原因应该是 systemd 版本不够;
而其它更高版本的是OK的,如 el8,el9,fedora37,debian11;
一般普通用户创建systemd服务的流程:
但这样还存在一个问题,就是开机的时候,服务并不会自动启动,而是要普通用户登录时才启动;
而且普通用户在退出登录后,服务进程就会被结束,再次登录则又被启动;
所以如果是需要持久性的服务,还是必须用 root 用户操作至少一次。
loginctl enable-linger <username>
执行这条命令,即留存用户的状态,达到这个用户退出后,systemd启动的进程依旧保留的效果。
如果只是希望有个普通用户进程能开机启动,并且完完全全的避开 root;
推荐还是用老办法(crontab) 例如:
@reboot /dir/bin/xxxx