Perovic asked:
I have a specific case where testing a new version of the software is being done at a specific time of the day so I have cronjob that should:
Software is set in /var/www/html folders V2 and V3 respectively. Therefore I use sed to change the version. a) in the morning change virtual host and restart apache b) in the afternoon change back to an old version and restart apache
Crontab is set like this:
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 changes the version but apache doesn’t restart to apply the changes. Can you please help me fix the issue? Thanks
My answer:
The old command service
is deprecated and will be removed in a future Ubuntu release. It is not the preferred way to manage services anymore. That is now systemctl
.
You should instead write systemctl restart apache2
. Of course, the server doesn’t need to be restarted for a simple configuration change; a reload would do as well and not cause an unnecessary service interruption. So, systemctl reload apache2
.
It is also the case that crontabs have a more restricted PATH than your normal login shell. It is possible that neither systemctl
nor service
are in the PATH. So you may wish to set a PATH at the top of the crontab. For example:
PATH=/usr/sbin:/sbin:/usr/bin:/bin
View the full question and any other answers on Server Fault.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.