使用cron执行定时任务遇到的坑

使用cron执行定时任务可能会遇到的一些问题,网络上的解决方案比较杂乱且不系统,这边做一下简单的归纳。

环境检查(Centos)

检查crontab工具是否安装

1
crontab -l

查看crond服务是否启动

1
service crond status

一般情况下linux系统会有cron服务

1
service crond restart [重启服务]

安装cron

1
yum install vixie-cron
1
yum install crontabs

ubuntu常用命令:

安装cron服务

apt-get install cron

选择编辑器-输入序号就行,记住一定要选择对编辑器

select-editor

service cron restart [重启服务]

service cron start [启动服务]

service cron stop [停止服务]

重启crontab服务

1
systemctl restart crond

查看cron状态

1
service crond status

crontab定时语法

格式说明

crontab格式说明

字符含义:

* 代表取值范围内的数字;

/代表"每";

-代表从某个数字到某个数字;

,代表离散的取值(取值的列表);

0|7都表示星期天。

一些示例

常用时间写法
1
2
3
4
5
6
7
* * * * *        //每分钟执行
* */4 * * * //每4小时执行
0 4 * * * //每天4点执行
0 12 */2 * * //每2天执行一次,在12点0分开始运行
* * * * 0 //每周日执行
* * * * 6,0 //每周六、日执行
5 * * * * //每小时的第5分钟执行
常用命令举例
1
2
3
4
5
6
7
8
9
10
11
12
每天晚上21:30重启apahce
30 21 * * * service httpd restart

每月1 10 22 日的4:45重启apache
45 4 1,10,22 * * service httpd restart

每月1到10日的4:45重启apache
45 4 1-10 * * service httpd restart

每隔两分钟重启apache
*/2 * * * * service httpd restart | 偶数
1-59/2 * * * * service httpd restart | 基数

crontab工具使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
全局系统配置文件
/etc/crontab

查看计划任务
crontab -l
cat /var/spool/cron/root

修改计划任务
crontab -e
vi /var/spool/cron/用户

查看日志
/var/log/cron
tail -F /var/log/cron

使用cron定时任务注意事项

注意注意

要用绝对路径写到命令,否则定时运行失败;

如果有对文件进行操作,也应该使用绝对路径;

新增cron任务后最好重启crontab服务。

1
2
3
4
# which python  //查看系统默认安装的python2的路径
/usr/bin/python
# which python3 //查看自行安装的python3的路径
/usr/bin/python3

指定python绝对路径去执行python脚本,例如:

1
30 13 * * * root /usr/local/bin/python3 /opt/res1.py > /opt/err.log 2>&1 &

本文标题:使用cron执行定时任务遇到的坑

文章作者:Pwner

发布时间:2020年08月05日 - 13:08

最后更新:2020年09月05日 - 23:09

原始链接:https://pwner.cn/posts/12d18c2f.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Buy me a cup of coffee.