I am using following steps to update code on server after login to server:
sudo -s
<wrote password here>
cd /var/www/staging
rm -r app.old
mv app app.old
svn checkout https://example.com/projectname/trunk/app app
Now I created update.sh
file in /var/www/
with following content
cd /var/www/staging
rm -r app.old
mv app app.old
svn checkout https://example.com/projectname/trunk/app app
And I have following crontab entry to run after every 5 minutes:
*/5 * * * * /var/www/update.sh
Problem: So cron job is working but it is only deleting the app
folder and not checking out it from svn repository. But when I run bash /var/www/update.sh
manually it works fine after sudo -s
.
How to fix this for cron job as well. Is it related to sudo -s
or something else?
Thanks
I suspect the problem is that the job is running from cron as root
and root user doesn't have permissions to checkout.
First, I suggest that you include details of the username/password to use with SVN - inside your script:
svn checkout --username USER --password PASS ttps://example.com/projectname/trunk/app app
Next, change the line in your crontab to this:
*/5 * * * * /var/www/update.sh 2>&1| mail -s "Cron job execution" youremail@wherever.com
Then, when the job executes, any errors would be sent to you via email. At least you'll see what is going wrong.
If you need to run it as a different user, then install it on that users crontab. Rather than trying to sudo over in the script.