2016-03-02 4 views
2

Я пытаюсь запустить простой кронтаб (на Mac OSX Terminal)Как узнать, работает ли Crontab?

Моя cronjob вещь выглядит следующим образом:

* * * * * /Users/tanavya.dimri/Documents/cron.sh 

cron.sh:

#!/bin/bash 
cd /Users/tanavya.dimri/Documents 
python hello.py > empty 

И hello.py

print "Hello" 

Когда я только запускаю sh cron.sh, он работает. Пустой, который является просто пустым текстовым файлом, меняется на «Hello». Тем не менее, я не знаю, работает ли он с crontab, потому что файл не изменяется после удаления приветствия из него.

+0

Попробуйте удалить файл. Если crontab работает, он должен создать его. – sabbahillel

+0

Кон не будет знать настройки из '.profile'' .bashrc'. Возможно, вам что-то не хватает, например, изменение PATh, поэтому можно найти pythom. –

ответ

0

Попробуйте удалить файл. Если crontab работает, он должен создать его

Существует способ проверить, успешно ли выполнена ваша работа crontab. Обратите внимание, что ссылки на файл журнала в командах cron задаются с использованием полных путей, а не относительных путей. Вы должны убедиться, что ваши сценарии используют полные пути или cd для правильной рабочей директории.

Crontab Log: How to Log the Output of My Cron Script

Допустим, что вы добавили backup.sh вашему кронтаб, как показано ниже, чтобы выполнить его в полночь каждый день.

$ crontab -e 59 23 * * * /home/john/bin/backup.sh 

Чтобы проверить, была ли эта работа успешно или не выполняется, проверьте файл/Var/Журнал/хрон, который содержит информацию обо всех хронах рабочих мест, которые получают выполняются в вашей системе. Как видно из следующего вывода , работа cron john была успешно исполнена.

$ tail /var/log/cron 
Oct 8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &) 
Oct 8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &) 
Oct 8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &) 

журнал Крон содержит следующую информацию:

Timestamp - дата и время, когда работа хрон была выполнена

Hostname - имя хоста сервера (например, DEV -db)

Имя и фамилия cron deamon. Например, crond [20399]

Имя пользователя - имя пользователя, под которым было выполнено это задание cron. Для примера , john.

CMD - все, что после этого является настоящей командой, которая была выполнена в того времени.

Если в файле backup.sh есть какие-либо эхо-утверждения, вы можете захотеть, чтобы зарегистрировал их в файле. В общем случае, если сценарий backup.sh cron выдает любой вывод (включая ошибки), вы можете записать их в файл журнала . Для этого измените запись crontab и добавьте вывод и перенаправление ошибок , как показано ниже.

$ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1 

В приведенном выше:

/home/john/logs/backup.log указывает, что стандартный вывод скрипта backup.sh будет перенаправлен в файл Backup.log ,

2> & 1 указывает на то, что стандартная ошибка (2>) перенаправляется к тому же дескриптора файла , который указывал на стандартный вывод (& 1).

Так как стандартный вывод и ошибка будут перенаправлены на /home/john/logs/backup.log

+1

Nah .. Не работает. ;/ – SinByCos

+0

@ AlexStone вы использовали полный путь туда, куда хотите, чтобы файл был уверен, что он помещен в нужное место? – sabbahillel

+0

@AlexStone Я добавил несколько подробностей, что мне нужно сделать. – sabbahillel

0

Прежде всего, проверьте, если у вас есть достаточное количество разрешений для файла cron.sh.

chmod 755 cron.sh 

Затем измените кронтаб для запуска периодически (1 мин):

*/1 * * * * /Users/tanavya.dimri/Documents/cron.sh 
0

По умолчанию cronjobs вошел в /var/log/syslog

Таким образом, вы можете просто Grep, что лог CRON и проверку выполнения Вашего задания :

grep CRON /var/log/syslog 
Смежные вопросы