我需要在启动时启动 icecast2 服务。
为了让它在启动时运行,我在 crontab (root) 中添加了以下行:
@reboot service icecast2 start >/home/pi/logs/icecast2.log 2>&1
重启后,服务没有运行,我得到这个错误:
/bin/sh: 1: 服务: 未找到
所以我在类似的线程上遵循了这个答案,并按照建议添加了完整路径:
@reboot service /usr/bin/icecast2 start >/home/pi/logs/icecast2.log 2>&1
但现在我得到了这个错误:
启动 usr-bin-icecast2.service.mount 失败:未找到单元 usr-bin-icecast2.service.mount。
笔记:
- 当我输入
sudo service icecast2 start
它的工作。 - 在树莓派上使用 Debian Scratch
您无需使用
cron
来获取服务即可启动引导。你只需要这样:
这将在每次启动时启动它。
该
service
程序期望参数 1 是目录中的可执行文件/etc/init.d/
。在 crontab 文件中,您指定了 icecast2 可执行文件的路径。你应该阅读 Debian/Unix 的初始化系统。AFAIK,Debian 使用现在事实上的标准
systemd
init 系统,它负责在启动时启动服务(以及更多),而service
现在是 systemd 的包装脚本systemctl
,它控制服务(现在称为Units
),如下所示:systemctl start icecast2
但
service
仍将向后兼容旧的 init 系统(称为sysvinit
),因此您仍然可以使用service
而不是systemctl
./etc/rc.d
不鼓励通过 cron 启动服务/守护进程,因为事实上的标准是定义提供更好结构和更多功能的 systemd 单元,或者使用一旦内核达到某个运行级别就会自动调用的老式运行级别脚本( “启动状态”)。帮自己一个忙,在网上搜索上面提到的术语,会有很多乐趣。