Тестирование Crontab в Debian Ubuntu - PullRequest
       21

Тестирование Crontab в Debian Ubuntu

5 голосов
/ 16 августа 2011

Я предвосхищу это, говоря, что я новичок в программировании командной строки с Debian Ubuntu ...

Я пытался настроить список crontab на сервере Debian Ubuntu, но не смогзаставить его работать.Вот пример:

MAILTO=myemail@gmail.com
* * * * * wall test
* * * * * /usr/bin/python2.6 /home/user/test.py > /home/user/clean_tmp_dir.log

Выше показано, когда я набираю "crontab -l", но в консоли не появляется никакого результата.Предполагается, что «test.py» создает файл csv, но ни один из них не создается.

Я не получаю никаких сообщений о выходе / ошибках.Я пытался найти журнал, но «var / log / cron» не существует, как и «etc / syslog.conf» ... Я пытался редактировать «etc / rsyslog.conf», но получил «E212: Can»t открыть файл для записи "... Я вошел в систему, однако.Нужны ли какие-то особые административные привилегии?Нужно ли указывать пользователя или "root" или что-то еще?

Кто-нибудь знает, что я делаю неправильно, как я могу создать / просмотреть журнал или как я могу выполнить любые другие простые тесты?Спасибо!

Ответы [ 2 ]

30 голосов
/ 24 августа 2011

Хорошо, давайте начнем сначала.

Создайте файл, скажем cron.txt, с точно следующим содержанием (1 строка):

* * * * * touch $HOME/CRON_IS_RUNNING

(Делать , а не создать CRON_IS_RUNNING вручную.) Выполнить

crontab cron.txt

, который должен тихо не выдавать, тогда

crontab -l

который должен напечатать

* * * * * touch $HOME/CRON_IS_RUNNING

Подождите минуту или около того, возможно, 2 минуты, затем

ls -l $HOME/CRON_IS_RUNNING

который должен напечатать что-то вроде

-rw-r--r-- 1 yourname yourgroup 0 2011-08-23 20:11 CRON_IS_RUNNING

Если все это работает, это подтвердит, что вы можете запускать задания cron.

Если это успешно, проблема может быть в вашей команде test.py. Это работает, когда вы запускаете его из командной строки? Если он работает из командной строки, но не из cron, test.py может зависеть от переменных среды (задания cron запускаются с меньшим количеством установленных переменных среды, чем обычно делают интерактивные команды).

1 голос
/ 24 августа 2011

Синтаксис в вашей стене команды неверен.Для вывода прямого сообщения вам необходимо использовать синтаксис: echo test | wall.wall test будет искать файл с именем test.

Любые сообщения cron будут в /var/log/syslog

Ваш cronjob будет находиться в /var/spool/cron/crontabs/username, который принадлежит

username: crontab

Я запустил тест на моей системе "Debian Squeeze" с вашим crontab, слегка модифицированным как пользователь root.

Я создал файл test.py с:

#!/usr/bin/python
print "hello"

создал тест файла стены с:

this is a test

Затем запустил crontab -e и добавил это к моемуcrontab:

MAILTO=myemail@gmail.com
* * * * * wall /usr/local/src/test
* * * * * /usr/bin/python2.6 /usr/local/src/test.py > /usr/local/src/test.log

При запуске это выводилось на экран:

Broadcast Message from root@X-Wing                                             
        (somewhere) at 21:09 ...                                               

This is a test   

Содержимое test.log содержало:

hello

Это было добавленов / var / log / syslog:

Aug 23 21:08:49 x-wing crontab[9850]: (root) REPLACE (root)
Aug 23 21:08:49 x-wing crontab[9850]: (root) END EDIT (root)
Aug 23 21:09:01 x-wing /usr/sbin/cron[1615]: (root) RELOAD (crontabs/root)
Aug 23 21:09:02 x-wing /USR/SBIN/CRON[9860]: (root) CMD (/usr/bin/python2.6 /usr/local/src/test.py > /usr/local/src/test.log)
Aug 23 21:09:02 x-wing /USR/SBIN/CRON[9862]: (root) CMD (wall /usr/local/src/test)
...