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 

2 Answers 2


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:


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
  • 1
    Awsome, saved my life :) Mine works fine like this. 0 7 * * * /bin/sh /root/Scripts/command.sh > /dev/null 2>&1
    – Louwki
    May 15, 2016 at 8:16
  • One point of contention: which sh and whereis sh both show /usr/bin/sh. That's because /bin is a symlink: lrwxrwxrwx 1 root root 7 Feb 17 12:07 /bin -> usr/bin. The most correct shebang AFAIK is #!/usr/bin/env sh. Feb 25, 2022 at 6:29

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


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.