Crontab介绍:Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
1.使用yum命令安装Crontab:
yum install vixie-cron #有些情况下无法下载但不影响使用
yum install crontabs
注:vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
cron是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置
tail -100 /var/log/cron #查看最下面100行日志
tail -f /var/log/cron #查看动态日志
2.查看Crontab状态:
service crond status#查看Crontab状态
ntsysv #查看crontab服务是否已设置为开机启动
chkconfig –level 35 crond on #加入开机自动启动
3.添加定时任务:
crontab -e #编辑cron任务模式
i #默认文字编辑器为vim,按i字母键即可添加cron任务
30 3 * * * /usr/local/etc/rc.d/lighttpd restart #将命令代码放入,此命令意义为每天的03:30 重启apache
ESC #按ESC键退出编辑模式
:wq #键入:wq保存
service crond restart #重启crontab服务
4.查看任务列表:
crontab -l
5.Crontab命令在线验证工具:
6.注意执行文件时要使用的python环境2还是3,有没有再次环境安装对应的第三方库,文件是否可执行文件,用户是否有文件执行权限,文件是否隐藏,文件要写绝对路径
第一列的 * 表示:分
第二列的 * 表示:时
第三列的 * 表示:日
第四列的 * 表示:月
第五列的 * 表示:周
0 */1 * * * python3 /test/test.py
//每小时执行一次test.py文件
*/70 * * * * python3 /test/test.py
//每70分钟执行一次test.py文件
* */1 * * * python3 /test/test.py > /test/test.log 2>&1
//每小时执行一次test.py文件,将输出内容保存至test.log
8.特殊字符: 星号():代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。 逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。 中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次。
##每月每天凌晨3点30分和中午12点30分执行test.sh脚本
30 3,12 * * * /home/test.sh
##每月每天每隔6小时的每30分钟执行test.sh脚本
30 */6 * * * /home/test.sh
##每月每天早上8点到下午18点每隔2小时的每30分钟执行test.sh脚本
30 8-18/2 * * * /etc/init.d/network restart
##每月每天晚上21点30分执行test.sh脚本
30 21 * * * /etc/init.d/network restart
##每月1号、10号、22号凌晨4点45分执行test.sh脚本
45 4 1,10,22 * * /etc/init.d/network restart
##8月份周一、周日凌晨1点10分执行test.sh脚本
10 1 * 8 6,0 /etc/init.d/network restart
##每月每天每小时整点执行test.sh脚本
00 */1 * * * /etc/init.d/network restart
每分钟执行 */1 * * * *
每小时 0 */1 * * *
每天 0 0 * * *
每周 0 0 * * 0
每月 0 0 1 * *
每年执行 0 0 1 1 *
每小时的第3和第15分钟执行 3,15 * * * *
在上午8点到11点的第3和第15分钟执行 3,15 8-11 * * *
每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * *
每个星期一的上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1
每月每天的 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 20 0-23/2 * * *
每天7:30执行 30 7 * * *
每月1号和15号执行 0 0 1,15 * *
每小时的第一分钟执行 1 * * * *
每月的1、11、21、31日的6:30执行 30 6 */10 * *
作者:TsengYUen
链接:https://www.jianshu.com/p/e121502c4070
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
9.查看crontab日志
linux中默认情况下,crontab中执行的日志写在/var/log下
#ls /var/log/cron*
/var/log/cron /var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4
crontab的日志比较简单,当然也可以将每条 crontab中的任务增加自己的日志,有利于查找执行失败原因。
0 6 * * * //root/script/ss.sh >> /root/for_crontab/mylog.log 2>&1 //把错误输出和标准输出都输出到mylog.log中
因此查看crontab日志可以直接查看log文件信息
tail -f /var/log/cron //查看最新的日志
tail -100 /var/log/cron //查看最新的100条日志