在最近的 Linux 发行版中,systemd 已经取代了传统的 /etc/init.d 脚本。并且可以支持用户服务
systemctl --user start my.service
我想知道我们是否可以使用 init 脚本做类似的事情?即让一个服务在系统启动时由普通用户运行
答案1
任何 initscript 都可以以任何用户身份运行任何命令,只需使用su $user -c "/home/$user/onboot.sh"
.这只会在启动时启动一个用户脚本,他们可以运行任何他们想要的东西。如果我想为用户提供像 systemd 用户服务这样的设施,我会给他们 Supervisord,并编写一个 initscript 以在启动时自动启动它。当然,他们可以自己做一些类似的事情,只需创建一个每分钟运行一次的 cronjob,然后启动supervisord(如果它尚未运行)。没有任何初始化脚本,它的工作原理是一样的。