Crontab定时任务 - 定时执行python脚本部署

原创
2020/05/06 17:16
阅读数 1.9K

Crontab命令格式:

* * * * * command
M H D m d command

M: 分(0-59) 
H:时(0-23)
D:天(1-31)
m: 月(1-12)
d: 周(0-6) 0为星期日


* 代表取值范围内的数字
/ 代表"每"
- 代表从某个数字到某个数字
, 代表离散的取值(取值的列表)

Crontab脚本示例:

  1. 每分钟执行:* * * * * python test.py 等价于*/1 * * * * python test.py 注意,每分钟的意思是指,每分钟的第1秒开始执行
  2. 每4小时执行:* */4 * * * python test.py
  3. 每周日执行:* * * * 0 python test.py
  4. 每周六、周日执行:* * * * 6,0 python test.py
  5. 每小时的第5分钟执行:5 * * * * python test.py

Crontab脚本编辑

编辑定时任务:

crontab -e # a 进入编辑模式 

加入:0 16 * * * python /opt/test.py

保存,退出即可。

当我们编辑完定时任务过后,记得重载一遍crond

systemctl reload crond.service

启动、停止、重启服务↓

systemctl start crond.service

systemctl stop crond.service

systemctl restart crond.service

设置开机自启:

systemctl enable crond # 开机自启动

 


crontab -e编辑生成的定时任务,任务记录文件位置

操作过程:

1.举例在a**用户下,创建了如下的定时任务

a**@standby spool]$ crontab -l
*/1 * * * * /home/a**/check_ps_if_exits.sh

备注:通过crontab -l就可以查看当前用户下的定时任务的设定。

2.通过在网上,找了该内容所在的具体的文件

/var/spool/cron目录下,具体的用户名文件中

3.使用a**用户查看该文件

[a**@standby spool]$ cd /var/spool/
You have new mail in /var/spool/mail/a**
[a**@standby spool]$ ls
anacron  cron  lpd  mail  plymouth  postfix  rhsm  up2date
[a**@standby spool]$ cd cron/
-bash: cd: cron/: Permission denied

备注:发现权限是不够的,也就是普通过的用户无法进入到cron目录中。

4.使用root用户,查看该文件

[root@standby cron]# pwd
/var/spool/cron
[root@standby cron]# ls -l
total 4
-rw------- 1 a** oinstall 46 Mar 12 20:28 oracle
[root@standby cron]# cat oracle 
*/1 * * * * /home/a**/check_ps_if_exits.sh

 备注:通过root进入到cron目录中,查看a**文件,与crontab -l输出的内容是一致的。

小结

  linux操作系统中,crontab -l对应的文件是/var/spool/cron目录下的具体的用户名文件。

总结:1. 执行程序的文件的的权限,使其可以执行。2. 添加任务,编辑crontab命令了。如果用vi /etc/crontab命令的话,会列出root的已有任务列表,这是针对系统的服务。如果是想用当前用户执行,可以用命令crontab -e 来打开一个vi编辑自己的任务。

crontab -e

输入:*/5 * * * * python file_path/test.py >> /***/test.log 2>&1

每隔5分钟就,运行一次 file——path目录下的test.py,将日志输出值/***/test.log中; 2>&1的意思是把错误的输出也输出到标准输出(2表示错误,2>表示错误输出,&表示等同于,1表示正确),因此如果运行出错也会把错误输出到之前定义的log中

流程:

  1. 设置定时任务的命令: crontab -e (设定好任务后,不用重启crontab服务, 可以即可生效,不要设定任务的执行时间等于当前或者很临近的,否则可能造成命令不生效)
  2. 查看定时任务的命令: crontab -l
  3. 注意设定任务时的,用户; 执行时需要两者一致。
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部