在Ubuntu 14.04.5 LTS我在用着脚本当正在使用的 TLS 证书更新时,重新启动某些服务。该脚本通过 root 的 crontab 运行。TLS 证书的任何更改都会触发重新启动服务并激活新证书的命令。
执行该命令时service vsftpd restart
,cron 守护程序会记录以下错误:vsftpd: unrecognized service
不用说,service vsftpd restart
在 root 的命令行上运行时,它可以按预期工作。
我还注意到运行时 vsftpd 没有出现在服务列表中service --status-all
root 用户的 Crontab
14 7 * * * /root/vesta-server-ssl-cert.sh
问题:通过 root 的 crontab 重新启动 vsftpd 服务的脚本中应放置什么正确的命令?
答案1
不久前,我在其他服务上也遇到过同样的问题;使用 initctl 解决了这个问题,并没有深入挖掘到底发生了什么。所以尝试一下:
/sbin/initctl restart vsftpd
它应该可以工作。
哦,我讨厌这些“这有效,但不知道为什么”的答案,但这就是我目前所拥有的全部。
编辑:好的,现在我感觉好多了。service
是一个 shell 脚本,它需要在 PATH 环境中有 /sbin,否则它找不到它映射“重新启动”到的停止和启动二进制文件。然后它使用 /etc/init.d/ 脚本,但它找不到该脚本,因此它报告“无法识别的服务”
汤姆汤姆汤姆