С 25 марта мой сервер не запускает задания cron, хотя он работал до этого дня, и ничего не изменилось. Версия для ОС - Ubuntu 8.04LTS.
Во-первых, я перезапустил cron и проверил процессы.
$ sudo /etc/init.d/cron restart
* Restarting periodic command scheduler crond
...done
$ ps aux | grep cron
root 14893 0.0 0.0 19640 908 ? Ss 14:50 0:00 /usr/sbin/cron
user 16144 0.0 0.0 4972 844 pts/0 R+ 14:50 0:00 grep cron
$ pgrep cron
14893
Кажется, что процесс cron запущен, но когда я проверил status:
$ /etc/init.d/cron status
* Usage: /etc/init.d/cron {start|stop|restart|reload|force-reload}
Я предполагаю, что что-то не так.
Я проверил syslog
$ less /var/log/syslog | grep CRON
Mar 25 07:50:01 mail /USR/SBIN/CRON[12406]: (user) CMD (/home/user/public_html/rails_app/current/script/runner -e production "NewsRelease.send_unnoticed_mails" >> /home/user/public_html/rails_app/current/log/cron.log 2>&1)
Mar 25 07:50:01 mail /USR/SBIN/CRON[12409]: (user) CMD (/home/user/public_html/rails_app/current/script/runner -e production "Link.send_unnoticed_mails" >> /home/user/public_html/rails_app/current/log/cron.log 2>&1)
Apr 7 11:47:19 mail /usr/sbin/cron[13954]: (CRON) INFO (pidfile fd = 3)
Apr 7 11:47:19 mail /usr/sbin/cron[13955]: (CRON) STARTUP (fork ok)
Apr 7 11:47:19 mail /usr/sbin/cron[13955]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Журналы после 7 апреля - это журналы, когда я запускаю команды для cron вручную. Поэтому cron не работает с 25 марта.
Мой файл crontab ниже. Он должен выполнять рельсы и рубиновые методы. Эти задания успешно выполнялись до 25 марта.
# Begin Whenever generated tasks for: rails_app
PATH=/usr/loca/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
50 7 * * * /home/user/public_html/rails_app/current/script/runner -e production "Link.send_unnoticed_mails" >> /home/user/public_html/rails_app/current/log/cron.log 2>&1
0 5 * * * /home/user/mysql_backup.sh >> /home/user/public_html/rails_app/current/log/cron.log 2>&1
0,15,30,45 * * * * /home/user/public_html/rails_app/current/script/runner -e production "Tweet.post_tweet_at" >> /home/user/public_html/rails_app/current/log/cron.log 2>&1
# End Whenever generated tasks for: rails_app
Если я правильно прочитал комментарии, вы ищете временное исправление, когда вы запускаете и запускаете новый сервер, на котором работает поддерживаемая ОС. В этом случае вы можете попробовать следующее
Создать сценарий, который будет запускать бесконечный цикл, чтобы ваши вызовы вместо того, чтобы пытаться исправить cron на очень устаревшей ОС. Что-то вроде этого должно делать.
#!/bin/bash
while true
do
time=$(date +%H:%M)
hr=$(cut -f1 -d: <<< "$time")
min=$(cut -f2 -d: <<< "$time")
if [ "$hr" == "07"] && [ "$min" == "50" ]; then
#run something at 7:50am
fi
if [ "$hr" == "05" ] && [ "$min" == "00" ]; then
#run something at 5am
fi
if [ "$((min % 15))" == "0" ]; then
#run something every quarter hour
fi
sleep 60
done
Тогда, конечно, задача запускать это во время загрузки. Мои 8,04 дня давно прошли, и я не могу сказать, что сработало тогда. Взгляните на этот пост, и посмотрите, доставит ли он вас туда, где вы хотите быть.
Если я правильно прочитал комментарии, вы ищете временное исправление, когда вы запускаете и запускаете новый сервер, на котором работает поддерживаемая ОС. В этом случае вы можете попробовать следующее
Создать сценарий, который будет запускать бесконечный цикл, чтобы ваши вызовы вместо того, чтобы пытаться исправить cron на очень устаревшей ОС. Что-то вроде этого должно делать.
#!/bin/bash
while true
do
time=$(date +%H:%M)
hr=$(cut -f1 -d: <<< "$time")
min=$(cut -f2 -d: <<< "$time")
if [ "$hr" == "07"] && [ "$min" == "50" ]; then
#run something at 7:50am
fi
if [ "$hr" == "05" ] && [ "$min" == "00" ]; then
#run something at 5am
fi
if [ "$((min % 15))" == "0" ]; then
#run something every quarter hour
fi
sleep 60
done
Тогда, конечно, задача запускать это во время загрузки. Мои 8,04 дня давно прошли, и я не могу сказать, что сработало тогда. Взгляните на этот пост, и посмотрите, доставит ли он вас туда, где вы хотите быть.
Если я правильно прочитал комментарии, вы ищете временное исправление, когда вы запускаете и запускаете новый сервер, на котором работает поддерживаемая ОС. В этом случае вы можете попробовать следующее
Создать сценарий, который будет запускать бесконечный цикл, чтобы ваши вызовы вместо того, чтобы пытаться исправить cron на очень устаревшей ОС. Что-то вроде этого должно делать.
#!/bin/bash
while true
do
time=$(date +%H:%M)
hr=$(cut -f1 -d: <<< "$time")
min=$(cut -f2 -d: <<< "$time")
if [ "$hr" == "07"] && [ "$min" == "50" ]; then
#run something at 7:50am
fi
if [ "$hr" == "05" ] && [ "$min" == "00" ]; then
#run something at 5am
fi
if [ "$((min % 15))" == "0" ]; then
#run something every quarter hour
fi
sleep 60
done
Тогда, конечно, задача запускать это во время загрузки. Мои 8,04 дня давно прошли, и я не могу сказать, что сработало тогда. Взгляните на этот пост, и посмотрите, доставит ли он вас туда, где вы хотите быть.