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脚本示例:
- 每分钟执行:
* * * * * python test.py
等价于*/1 * * * * python test.py
注意,每分钟的意思是指,每分钟的第1秒开始执行。 - 每4小时执行:
* */4 * * * python test.py
- 每周日执行:
* * * * 0 python test.py
- 每周六、周日执行:
* * * * 6,0 python test.py
- 每小时的第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中。
流程:
- 设置定时任务的命令: crontab -e (设定好任务后,不用重启crontab服务, 可以即可生效,不要设定任务的执行时间等于当前或者很临近的,否则可能造成命令不生效)
- 查看定时任务的命令: crontab -l
- 注意设定任务时的,用户; 执行时需要两者一致。