找不到服务命令 cron

找不到服务命令 cron

我需要在启动时启动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它起作用了。
  • 在 Raspberry pi 上使用 Debian Scratch

答案1

您不需要使用cron来获取服务来启动启动。

你所需要的只是这个:

systemctl enable icecast2

这将在每次启动时启动它。

答案2

service程序期望参数 1 是/etc/init.d/目录中的可执行文件。在 crontab 文件中,您指定了icecast2 可执行文件的路径。

您应该阅读 Debian/Unix 的 init 系统。 AFAIK,Debian 使用现在事实上的标准systemdinit 系统,它负责在启动时启动服务(以及更多),而service现在是 systemd 的包装脚本systemctl,它控制服务(现在称为Units),如下所示:

systemctl start icecast2

service仍将向后兼容旧的 init 系统(称为sysvinit),因此您仍然可以service使用systemctl.

不鼓励通过 cron 启动服务/守护进程,因为事实上的标准是定义提供更好结构和更多功能的 systemd 单元,或者使用旧式运行级别脚本,/etc/rc.d一旦内核达到某个运行级别( “启动状态”)。

帮自己一个忙,在网上搜索上面提到的术语,会有很多乐趣。

相关内容