Here is a reminder to myself with three things to remember when writing cron jobs. Surprisingly, even after doing it fairly frequently for years and years, I still get caught by one of these once in a while.
- User. Just because the script is working fine under your user, it doesn’t mean it will work well from crontab. Cron jobs are often executed under a different user account. Check, don’t assume. And be noisy about permissions and other possibly related issues.
- Environment. This is slightly related to the previous point. But just because something works fine from the command line, doesn’t mean it will run smoothly as a cron task. Anything that requires particular environment variables, user input, or being executed in a specific directory should be double checked.
- Duration. Cron executes tasks on schedule. It doesn’t really care if the previous instances finished running. So, either make sure the script can run several instances simultaneously, or using a locking mechanism, to make sure two instances don’t step on each other’s toes.