15

I have this cron

38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''

I have this cron under the a different user so I switch users to deploy

sudo su deploy
crontab -e

and i see my cron then i tail the log under the root user

tail -n300 -f /var/log/syslog

and I see my cron

Jul  5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

But the cron is either not running or there is a permission issue...When i run the task in the console it works great but not in the cron...any idea what i am missing

this is Ubuntu 12.04 LTS

Maybe i can log a more detailed list to somewhere to see the errors

1 Answers1

22

CRON delivers the applications' output (stdout, stderr) via local mail. Ubuntu apparantly does not have an MTA (Mail Transfer Agent) installed by default these days. CRON prints a notification into the systems logfile whenever a delivery failed:

Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

You can install an MTA, e.g. postfix, for internal (local) use only, e.g.

aptitude install postfix

During the installation you will be asked what default configuration to use. You should select the Local only configuration.

Thereafter you can find the output of the applications ran by CRON using

tail -f /var/mail/<your_username>

Of course you can also write the logging output to a dedicated log file or pipe/redirect the output to a file by using built-in shell functionality...

moooeeeep
  • 321