Crontab Linux 不是 运行 在特定时间
Crontab Linux not running at specific time
我有一个 crontab 作业,每天 07:00 运行。
我已经设置好了
0 7 * * * /usr/bin/curl http://localhost//blablaba
没用
但如果我将其替换为
*/10 * * * * /usr/bin/curl http://localhost//blablaba
然后 运行 每 10 分钟一次。但如果我给定具体时间,它就不起作用
为了您的信息,我检查了服务器时间,它显示正确的时间
感谢您的帮助:(
试试这个
0 0/10 * 1/1 * ? * /usr/bin/curl http://localhost//blablaba
您的 cron 表达式看起来是正确的。
因为它遵循这种格式:
minute hour day-of-month month day-of-week [user] command
0 7 * * * /usr/bin/curl http://localhost//blablaba
PS: 如果您使用的是 /etc/crontab 文件而不是用户特定的 crontab,则需要添加用户字段。
因此,如果您的 cron 作业是在 /etc/crontab
文件中定义的,那么您需要将用户字段添加到您的 cron 作业以使其成为 运行。如果不是这种情况,请检查客户端和服务器端的 URL。
但是,我认为最好的办法是调试 cron 作业。因此,您需要通过执行以下操作来为 cron 作业启用日志记录:
如果你在 Ubuntu
:
sudo vi /etc/rsyslog.d/50-default.conf
如果你在 CentOS
:
sudo vi /etc/rsyslog.conf
如果注释了这一行,取消注释:
#cron.* /var/log/cron.log
然后重启rsyslog和cron:
sudo service rsyslog restart
sudo service cron restart or sudo service crond restart
现在您可以检查 /var/log/cron.log
文件中的日志消息,看看是否有任何问题。
你也可以试试这个
你必须在 phpMyAdmin 中检查你的服务器时间
第 1 步:单击 phpMyAdmin。
第 2 步:不选择数据库/ table 运行 this
SQL 查询“SELECT NOW()”
在这里您将以 24 小时格式获取服务器的当前时间。现在您可以根据服务器时间设置cron作业了。
这是因为当您指定时间时,crontab 会根据UTC(Coordinated Universal Time) 时区来获取它。
因此,为了适用于您的系统,您应该根据您的时区指定它,或者您可以根据 UTC 在命令中转换您的具体时间。
例如:
我的时区是 JST,我想每天在 JST 15:00 运行 这个文件。所以首先我必须将这个时间转换为 UTC。它看起来像这样 -
0 6 * * * python code.py(注意:时间是从 JST 15:00 转换为 UTC 6:00)
所以这将根据我的时区 (JST) 在每天下午 3 点整执行我的文件
我有一个 crontab 作业,每天 07:00 运行。 我已经设置好了
0 7 * * * /usr/bin/curl http://localhost//blablaba
没用
但如果我将其替换为
*/10 * * * * /usr/bin/curl http://localhost//blablaba
然后 运行 每 10 分钟一次。但如果我给定具体时间,它就不起作用
为了您的信息,我检查了服务器时间,它显示正确的时间
感谢您的帮助:(
试试这个
0 0/10 * 1/1 * ? * /usr/bin/curl http://localhost//blablaba
您的 cron 表达式看起来是正确的。 因为它遵循这种格式:
minute hour day-of-month month day-of-week [user] command
0 7 * * * /usr/bin/curl http://localhost//blablaba
PS: 如果您使用的是 /etc/crontab 文件而不是用户特定的 crontab,则需要添加用户字段。
因此,如果您的 cron 作业是在 /etc/crontab
文件中定义的,那么您需要将用户字段添加到您的 cron 作业以使其成为 运行。如果不是这种情况,请检查客户端和服务器端的 URL。
但是,我认为最好的办法是调试 cron 作业。因此,您需要通过执行以下操作来为 cron 作业启用日志记录:
如果你在 Ubuntu
:
sudo vi /etc/rsyslog.d/50-default.conf
如果你在 CentOS
:
sudo vi /etc/rsyslog.conf
如果注释了这一行,取消注释:
#cron.* /var/log/cron.log
然后重启rsyslog和cron:
sudo service rsyslog restart
sudo service cron restart or sudo service crond restart
现在您可以检查 /var/log/cron.log
文件中的日志消息,看看是否有任何问题。
你也可以试试这个 你必须在 phpMyAdmin 中检查你的服务器时间 第 1 步:单击 phpMyAdmin。 第 2 步:不选择数据库/ table 运行 this SQL 查询“SELECT NOW()”
在这里您将以 24 小时格式获取服务器的当前时间。现在您可以根据服务器时间设置cron作业了。
这是因为当您指定时间时,crontab 会根据UTC(Coordinated Universal Time) 时区来获取它。 因此,为了适用于您的系统,您应该根据您的时区指定它,或者您可以根据 UTC 在命令中转换您的具体时间。
例如: 我的时区是 JST,我想每天在 JST 15:00 运行 这个文件。所以首先我必须将这个时间转换为 UTC。它看起来像这样 -
0 6 * * * python code.py(注意:时间是从 JST 15:00 转换为 UTC 6:00)
所以这将根据我的时区 (JST) 在每天下午 3 点整执行我的文件