HarryT
HarryT

Reputation: 29

Why isn't this cron doing anything?

So, I have a very simple cron set up to run daily. It does a find and rsync with certain parameters. When it runs on the bash command line, it runs just fine, but when in the root crontab, it doesn't want to know. Any ideas what is wrong here?

/usr/bin/find /var/www/*/logs/ -iname '*.lzma' -mtime +21 -exec rsync -a --ignore-existing --relative -e 'ssh -q -p 2230 -o "StrictHostKeyChecking no"' {} root@nas0:/space/Logs/reporting0/ \;

Syslog shows it ran:

Apr 28 09:40:01 reporting1 CRON[26347]: (root) CMD (/usr/bin/find /var/www/*/logs/ -iname '*.lzma' -mtime +21 -exec rsync -a --ignore-existing --relative -e 'ssh -q -p 2230 -o "StrictHostKeyChecking no"' {} root@nas0:/space/Logs/reporting1/ \;)

But nothing actually gets copied.

Upvotes: 1

Views: 117

Answers (1)

Mattia Dinosaur
Mattia Dinosaur

Reputation: 920

Cron always runs with a mostly empty environment. HOME, LOGNAME, and SHELL are set; and a very limited PATH.

link here

So you can complete all application with the full path or add the environment variables.

For example in Ubuntu you can replace rsync by /usr/bin/rsync
repalce ssh by /usr/bin/ssh

You can check your cron's environment variable by add this to cron and check the /tmp/env.output

* * * * * env > /tmp/env.output

here is detail

Upvotes: 1

Related Questions