Linux系统设置定时任务

时间:2021-01-16 07:49:53
使用crontab命令,下面一起来看一下~

 首先需要启动crontab服务

 

service crond start #启动服务
service crond stop #关闭服务
service crond restart #重启服务
service crond reload #重新载入配置

 

 

然后使用crontab -e进行编辑,然后进行例行任务的编辑,之后保存退出即可。

具体的格式说明如下:

 每一行的格式为:分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

 

值得注意的是,在crontab中,无论是命令还是文件的路径都要写全,否则不认。

比如要每天6点执行一个/home/run/test.sh的脚本,可以配置如下:

0 6 * * * /sbin/sh /home/run/test.sh 

或者

0 6 * * * cd /home/run && /bin/sh test.sh

这里需要注意的是,test.sh脚本中的命令也需要使用全路径,否则crontab找不到的。

 如果还想有一些其他的需求,比如保留输出可以将输出重定向,与正常的脚本运行没有区别

 

0 6 * * * cd /home/run && /bin/sh test.sh > log


一些例子:
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s h。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。
10 1 * * 6,0 /bin/find -name “core” -exec rm {} ;
上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c h e c k . s h。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s h

实现定时task的两种方式
一种是编辑一个文件,用crontab 载入
一种是用crontab -e 直接编辑生效

例子:

每隔以一分钟往一个文件打入一堆字符
先vi crontab1
#every minute echo char to file
1-59 * * * * echo `date`” mysql” >> /opt/shuju/dazi.txt
最好加上注释
这样就能明确当前的这个定时任务的目的
然后 crontab crontab1载入crontab1这个定时任务

另外一种是
crontab -e
#every minute echo char to file
1-59 * * * * echo `date`” tian” >> /opt/shuju/da.txt

date 用单引号,是表示如果date是一个命令,就作为命令执行
如果你直接用date ,那么输出的是”date”这个字符串,而不是date这个命令的执行结果

>> 是附加到文件末尾,而>是直接覆盖文件

如果crontab -e无法编辑
那么是你的环境变量没有配置
请你进入 vi /etc/profile
加上
EDITOR=vi
export EDITOR

crontab -l 列出所有定时任务 如果要删除一个定时任务
那么
crontab -e
注释掉对应定时任务语句
例如要删除我刚刚定义的那个定时任务
#every minute echo char to file
1-59 * * * * echo `date`” oracle” >> /opt/shuju/tj.txt
只需要
#every minute echo char to file
#1-59 * * * * echo `date`” oracle” >> /opt/shuju/tj.txt

如果用crontab -r
就删除拉所有的定时任务(需要特别小心)