Pwner's Blog

能全力以赴不尽力而为

0%

使用 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 &
如果文章对你有用,可以请我喝杯咖啡~
  • 本文作者: Pwner
  • 本文链接: https://pwner.cn/posts/12d18c2f.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!