Debugging Anacron

I like to automate things and anacron/cron are some of my go-to tools for getting the job done.

But, recently I was having issues with anacron and couldn’t for the life of me figure out why one of my daily tasks wasn’t running. I had followed all the basic steps, such as making sure the executable was only alphanumeric and didn’t contain any extension (e.g., myscript = good, myscript.sh = bad), but my task was still not running. When I ran run-parts --test /etc/cron.daily, my task showed up as one of the listed tasks. When I repeat the same command without the --test flag, my task works perfectly.

So what was wrong?

Well, I had completely forgotten that anacron runs as root, not as my user. One of the commands called within my task was installed as a locally for my user, not globally. When I had performed the run-parts tests, I was also running as my user, which is why everything appeared to be working.

The solution was to simply have the full path to the command (i.e., /home/nicholas/.local/bin/my-command) in the task instead of just calling the command directly (i.e., my-command)