Cron 自特定日期以来一直未运行

Cron 自特定日期以来一直未运行

我的服务器自 3 月 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进程正在运行,但是当我检查状态时:

$ /etc/init.d/cron status
 * Usage: /etc/init.d/cron {start|stop|restart|reload|force-reload}

我想肯定有什么地方出了问题。

我检查了系统日志

$ 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)

4 月 7 日之后的日志是我cron手动运行命令时的日志。
因此,cron 自 3 月 25 日起就一直没有运行。

我的 crontab 文件如下。它用于执行 rails 和 ruby​​ 方法。这些作业在 3 月 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

答案1

如果我没看错,你正在寻找一个临时解决方案,同时让新服务器运行受支持的操作系统。在这种情况下,你可以尝试以下方法

创建一个脚本,运行无限循环来拨打电话,而不是尝试在非常过时的操作系统上修复 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 时代已经过去很久了,我不知道当时什么方法有效。看看这个帖子看看它是否能让你达到你想要的目标。

相关内容