How to set a cron job to run a shell script?
I had set a cron job:
20 * * * * /usr/bin/sh /home/lucky/myfile.sh
The main problem is that at the schedule time, there is an error: "mail have sent to /var/spool/mail/lucky".
The contents of myfile.sh is:
mkdir jh
cd jh
Solution 1:
This is not ok for a script which is set as a cron job:
mkdir jh
cd jh
You should give the full path where jh
directory must to be created. Also, in this path you should have permission to create new files/directories.
For example, your script should look like:
#!/bin/sh
mkdir /home/lucky/jh
cd /home/lucky/jh
Also /usr/bin/sh
is not the right path for sh
. The right path is /bin/sh
. You can check this with whereis sh
command. And even so, your cron job should look like:
20 * * * * /home/lucky/myfile.sh
Don't forget to make the script executable:
chmod +x /home/lucky/myfile.sh
Solution 2:
The path where this seems to be creating the folder at is /
. This is because the crontab
requires full path to folder and files in all the files that it executes .
So the path in the myfile.sh should be
mkdir <absolutePath>/jh
cd <absolutePath>/jh
20 * * * * /usr/bin/sh /home/lucky/myfile.sh
This line is correct though you should check the path to see if sh exists at /usr/bin/sh or not (use which sh
to see the path where sh exists; mine was /bin/sh)
If you are in a hurry to start writing crontab this link has pretty good examples
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/