Я уже прошу прощения за то, что задал еще один вопрос cron. Я прочитал десятки справочных статей в Интернете, но все еще не нашел решения. Так что из любопытства мне нужно найти решение.
Я просто хочу запускать команду каждый день в 4 утра. Вот что я сделал до сих пор:
# crontab -e
. Добавьте эту строку: 00 04 * * * root ruby /home/script.rb list >> /tmp/output.log
. (script.rb просто содержит "устанавливает 'hello'") rvm cron setup
, чтобы установить некоторые переменные среды в файл crontab для задания cron, чтобы найти мои исполняемые файлы ruby. PATH
, SHELL = / bin / bash
и BASH_ENV = / root / .bashrc
. После 4 часов ночи я проверяю журналы cron, и действительно, скрипт был выполнен.
14 декабря 4:00:01 admin CRON [25374]: (root) CMD (root ruby /home/script.rb list >> /tmp/output.log)
, но когда я проверьте / tmp
, файл output.log не существует.Когда я запускаю команду отдельно, появляется /tmp/output.log и содержит привет, поэтому команда работает.
ruby
на /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby
(вывод ] which ruby
), чтобы сделать все абсолютными путями. Он запускается, но по-прежнему нет /tmp/output.log. 00 04 * * * root / home / run_script
вместо этого, где run_script
содержит: #! / Bin / bash {{1 }} / usr / local / rvm / rubies / ruby-2.2.1 / bin / ruby /home/script.rb list >> /tmp/output.log
просто попробуйте использовать файл сценария вместо однострочной команды в crontab. Он запускается, но по-прежнему нет /tmp/output.log. run_script
, избавляюсь от всего рубинового и иду простым путем: #! / Bin / bash
echo "hello" >> / tmp /output.log
Он запускается, но по-прежнему нет /tmp/output.log. Я также должен отметить, что я установил MAILTO = root
в моем файле crontab, но почта не доставлялась в root.
run_script
и поместил его в /etc/cron.daily
, он отлично работает. Нет проблем. Другие примечания: Cron работает: ps -ef | grep cron | grep -v grep
выводит, что cron запущен. В файле crontab после моей команды есть пустая строка.
cron кажется довольно сложным для отладки. Системный журнал просто сообщает мне, что задание cron было выполнено, но больше ничего не сообщает. Я не получаю почту, поэтому это не может мне помочь. К счастью, /etc/cron.daily пока работает, но я хочу знать, почему не работает crontab.
Есть предложения, идеи, намеки на отладку?
Это неправильный формат для файла crontab пользователя. Вам необходимо удалить спецификацию пользователя root '. У вас будет это в
/ etc / crontab ', но не в crontab для каждого пользователя.