Я бросил кучу дротиков, пытаясь заставить мой скрипт на python выполняться каждую минуту. Поэтому я решил упростить это, чтобы просто делать «простейшую вещь, которая могла бы работать» один раз в минуту (я запускаю debian / testing).
Я создал однострочный файл в /etc/cron.d/perminute
:
* * * * * /bin/touch /home/me/ding_dong
Он принадлежит пользователю root и является исполняемым (не уверен, имеет ли это значение). И тогда я сделал:
sudo service cron reload
А потом бездельничать и ls -ltr
снова и снова запускать в моем домашнем каталоге ( /home/me
). Но мой файл ding_dong никогда не появляется. Я знаю, если я это сделаю sudo /bin/touch /home/me/ding_dong
, это сразу же появится.
Очевидно, здесь что-то упущено.
Ответы:
При добавлении конфигурации cron в
/etc/cron.d/
или в/etc/crontab
вы должны добавить имя пользователя, в каком контексте должна выполняться команда, в вашем примере* * * * * root /bin/touch /home/me/ding_dong
И только подсказка от меня: вам не нужно запускать запуск
ls -ltr
снова и снова, просто используйте,watch -n 5 "ls -ltr"
и он будет запускать команду каждые 5 секунд (или любое другое значение, заменяя 5 на то, что вы хотите).источник
man cron
немного медленнее и обратив особое внимание наDEBIAN specific
разделы, я заметил, что файлы НЕ должны быть групповыми или другими доступными для записи. Что я включил в свое разочарование в один момент.man cron
: Кроме того, в Debian cron читает файлы в каталоге /etc/cron.d. cron обрабатывает файлы в /etc/cron.d так же, как и файл / etc / crontab (они следуют специальному формату этого файла, то есть включают пользовательское поле ). Однако они не зависят от / etc / crontab: они, например, не наследуют настройки переменных среды из него. Это изменение относится только к Debian, смотрите примечание под DEBIAN SPECIFIC ниже.Чтобы создать новую
cron
работу, вы должны работатьcrontab -e
от имени пользователя, которого вы хотите запустить. Затем добавьте соответствующую строку в появившемся окне редактора:То, как вы это делаете, требует другого формата и в любом случае не очень хорошая идея. Crontabs в
/etc/cron.d
имеют немного другой формат, они требуют имени пользователя для запуска. Например:Хорошая уловка (как предлагает @VogonPoetLaureate) - фиксировать стандартную ошибку ваших заданий cron, которая может помочь отладить их. Например:
источник
crontab -l
перечислить все ваши задания cron.Возможная ошибка здесь заключается в том, как создается однострочный файл . Из документации по Ubuntu :
Например, этот способ создания не работает:
источник