Я создал файл под названием ntpdate
в /etc/cron.hourly
#!/bin/sh/usr/sbin/ntpdate-debiandate > /tmp/william_tmpdate > /william_tmpdate > ~/william_tmpecho test
Я также сделал Chmod 755 для этого файла.
Однако я не могу сказать, был ли файл запущен или нет!
Файл не создан ни в одном из 3 каталогов.
Если я вручную запущу cd / && run-parts --report /etc/cron.hourly
затем файлы создаются, и я получаю эхо-сигнал.
Может ли кто-нибудь порекомендовать (в идеале пошаговые!) инструкции для проверки того, что он работает?
Вам следует заглянуть в свой /var/log/syslog
файл журнала. Если бы cron был запущен, у него была бы строка типа:
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
Одним из основных недостатков cron является то, что cron работает в чрезвычайно ограниченной среде оболочки, в результате чего многие переменные не экспортируются в среду, в основном $PATH. Убедитесь, что вы используете все абсолютные пути к исполняемому файлу, включая общие функции, такие как echo
, uptime
, date
, и т.д. Все должны использовать полные пути (/bin/echo
, /bin/date
, /usr/bin/uptime
). Чтобы определить путь к исполняемому файлу, вы можете использовать which
команда вроде так: which echo
- это покажет вам полный путь к этому инструменту.
Plat0n
05.Июль.2022 01:29:24
4
Попробуйте изменить первую строку вашего скрипта (интерпретатора) на:
#!/bin/bash
В прошлом у меня также были проблемы с переменными среды и ПУТЯМИ. После изменения интерпретатора на bash
мои проблемы исчезли.
Katya
05.Июль.2022 01:37:56
5
Учитывая, что я добавил clearme.sh
сценарий в /etc/cron.hourly/
Просто отфильтруйте задачи CRON в терминал с могущественными эгреп и 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)
Чтобы объяснить все шаг за шагом:
cat /var/log/системный журнал - распечатай мне системный журнал
egrep clearme - но выделяйте только те строки, которые содержат текст очистите меня
awk "{ print $1 }" - выведите мне ту строку, которая содержит текст очистите меня
> ~/Desktop/cronlog.txt - вывод результатов в файл cronlog.txt расположенный на Рабочий стол каталог.
4-й шаг является необязательным. Он просто напечатает результаты в терминале вместо файла.