I like to automate things and
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.,