Как я могу узнать, закончилась ли моя почасовая работа cron?

Я создал файл с именем ntpdate в /etc/cron.hourly

#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test

Я также сделал Chmod 755 для этого файла.

Однако я не могу сказать, был ли файл запущен или нет!

Файл не создан ни в одном из 3 каталогов.

Если я запускаю cd / && run-parts --report /etc/cron.hourly вручную, файлы создаются, и я получаю эхо.

Кто-нибудь может порекомендовать (в идеале пошаговое руководство!) Инструкцию, чтобы проверить, работает ли он?

26
задан 12 June 2012 в 04:55

4 ответа

Один из главных недостатков cron - это запуск cron в крайне ограниченной оболочке, в результате чего многие переменные не экспортируются в среду, в основном $ PATH. Убедитесь, что вы используете все абсолютные пути к исполняемому файлу, включая общие функции, такие как echo, uptime, date и т. Д., Все должны использовать полные пути (/bin/echo, /bin/date, /usr/bin/uptime). Чтобы определить путь к исполняемому файлу, вы можете использовать команду which следующим образом: which echo - это покажет вам полный путь к этому инструменту.

0
ответ дан 12 June 2012 в 04:55

Попробуйте изменить первую строку вашего скрипта (интерпретатора) на:

#!/bin/bash

В прошлом у меня также были проблемы с переменными окружения и проблемами PATH. После изменения переводчика на bash мои проблемы исчезли.

0
ответ дан 12 June 2012 в 04:55

Учитывая я добавил clearme.sh сценарий в /etc/cron.hourly/

Просто отфильтруйте задачи КРОНА в терминале с мощным egrep и awk:

$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt

Вывод будет похож:

Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)

Объяснить все пошаговое:

  1. кошка/var/log/syslog - печатает меня Системный журнал
  2. egrep clearme - но только выберите строки, которые содержат текст clearme
  3. awk "{печатают 1$}" - печатают меня, что строка, которая содержит текст clearme
  4. > ~/Desktop/cronlog.txt - производит результаты в файле cronlog.txt, расположенный на каталоге Desktop.

4-й шаг является дополнительным. Это просто распечатает результаты в терминале вместо файла.

1
ответ дан 12 June 2012 в 04:55

Необходимо заглянуть Ваш /var/log/syslog файл журнала. Если бы крон работал, он имел бы строку как:

Jun 11 19:09:01 penguin CRON[17376]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Для советов по устранению неисправностей см. https://help.ubuntu.com/community/CronHowto#Troubleshooting_and_Common_Problems

36
ответ дан 12 June 2012 в 04:55

Другие вопросы по тегам:

Похожие вопросы: