我有一个特定的案例,需要在一天中的特定时间测试软件的新版本,因此我有一个 cronjob,它应该:
软件分别设置在/var/www/html 文件夹 V2 和 V3 中。因此我使用 sed 来更改版本。a) 上午更改虚拟主机并重启 apache b) 下午改回旧版本并重启 apache
Crontab设置如下:
0 9 * * * sed -i 's/V2/V3/g' /etc/apache2/sites-available/software.conf && service apache2 restart
0 14 * * * sed -i 's/V3/V2/g' /etc/apache2/sites-available/software.conf && service apache2 restart
Sed 更改了版本,但 apache 不会重新启动以应用更改。您能帮我解决这个问题吗?谢谢
答案1
旧命令service
已弃用,并将在将来的 Ubuntu 版本中删除。它不再是管理服务的首选方式。现在就是这样systemctl
。
您应该改为写systemctl restart apache2
。当然,简单的配置更改不需要重新启动服务器;重新加载也可以,而且不会导致不必要的服务中断。所以,systemctl reload apache2
。
另外,crontabs 的 PATH 比您的常规登录 shell 更受限制。 和 可能都不systemctl
在service
PATH 中。 因此您可能希望在 crontab 的顶部设置 PATH。 例如:
PATH=/usr/sbin:/sbin:/usr/bin:/bin