* * * * * command
M H D m d command
M: 分(0-59)
H:时(0-23)
D:天(1-31)
m: 月(1-12)
d: 周(0-6) 0为星期日
* 代表取值范围内的数字
/ 代表"每"
- 代表从某个数字到某个数字
, 代表离散的取值(取值的列表)
每天清晨 4:00:01,用python执行/opt/aa.py文件。
编辑定时任务:
#crontab -e
加入:
0 4 * * * python /opt/aa.py
保存,退出即可。
■每分钟执行:
* * * * * date>>/opt/test.log
相当于
*/1 * * * * date>>/opt/test.log
注意,每分钟的意思是指,每分钟的第1秒开始执行。
■每4小时执行:
* */4 * * * date>>/opt/test.log
■每周日执行:
* * * * 0 date>>/opt/test.log
■每周六、周日执行:
* * * * 6,0 date>>/opt/test.log
■每小时的第5分钟执行:
5 * * * * date>>/opt/test.log
输入
crontab -e
按下 a 键进入到编辑模式
输入脚本:
0 */1 * * * /home/work/start-service.sh
同时按下 ctrl+c 退出编辑模式
按下 shift+: 输入 wq 退出 crontab
当我们编辑完定时任务过后,记得重载一遍crond
systemctl reload crond.service
启动、停止、重启服务↓
systemctl start crond.service
systemctl stop crond.service
systemctl restart crond.service
设置开机自启:
systemctl enable crond # 开机自启动
一般设置crontab定时任务都是通过crontab -e来编辑生成的,那么就有个疑问,crontab -e编辑生成的内容,最终是写在哪个文件中的呢?
操作过程:
1.举例在oracle用户下,创建了如下的定时任务
[oracle@standby spool]$ crontab -l
*/1 * * * * /home/oracle/check_ps_if_exits.sh
备注:通过crontab -l就可以查看当前用户下的定时任务的设定。
2.通过在网上,找了该内容所在的具体的文件
/var/spool/cron目录下,具体的用户名文件中
3.使用oracle用户查看该文件
[oracle@standby spool]$ cd /var/spool/
You have new mail in /var/spool/mail/oracle
[oracle@standby spool]$ ls
anacron cron lpd mail plymouth postfix rhsm up2date
[oracle@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 oracle oinstall 46 Mar 12 20:28 oracle
[root@standby cron]# cat oracle
*/1 * * * * /home/oracle/check_ps_if_exits.sh
备注:通过root进入到cron目录中,查看oracle文件,与crontab -l输出的内容是一致的。
小结:
linux操作系统中,crontab -l对应的文件是/var/spool/cron目录下的具体的用户名文件。
今天用python写了处理文件的程序,但是因为快要下班了,所以想用crontab来完成。搜了一下,大部分都是执行的shell脚本,自己根据搜索的资料写了测试了几次,亲测能用,整理一下。
首先是python程序,就不贴源程序了,把测试crontab的python程序写出来吧。
crontest.py
#!/usr/bin/python
#encoding=utf-8
import os
outfileName = '/data5/outcid.txt'
outfile = open(outfileName, 'w')
outfile.write("This is crontab command test!")
outfile.close()
然后更改crontest.py的权限,使其可以执行。然后就是用编辑crontab命令了。如果用vi /etc/crontab命令的话,会列出root的已有任务列表,这是针对系统的服务。如果是想用当前用户执行,可以用命令crontab -e 来打开一个vi编辑自己的任务。
crontab -e
输入
*/2 * * * * python /data5/crontest.py >> /data5/crontest.py.log 2>&1
意思是每个两分钟就用python执行/data5目录下的crontest.py,将日志输出值crontest.py.log中,当然,程序crongtest.py中的输入到指定文件的数据是不会输入到该log文件中的,后面那个2>&1的意思是把错误的输出也输出到标准输出(2表示错误,2>表示错误输出,&表示等同于,1表示正确),因此如果运行出错也会把错误输出到之前定义的log中。
以下为有用的参考资料:
分钟 小时 日期 月份 周 命令
举例:
每天8点30分运行命令/tmp/run.sh
30 8 * * * /tmp/run.sh
每两小时运行命令/tmp/run.sh
0 */2 * * * /tmp/run.sh
设置的时候用crontab -e来设置
设置好后可以用crontab -l来查看
设置好后不用重启crontab服务,马上生效
但至少间隔一分钟,也就是说9:50分设置9:51分运行的命令,很可能是不会生效的,至少要设置9:52分运行。
你用哪个用户运行crontab -e,那么执行的时候就是以哪个用户身份执行
文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890
Python Free
邮箱:417803890@qq.com
QQ:417803890
皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved
微信扫一扫关注公众号:
Python Free