1、crontab
启动
systemctl status crond 查看服务状态
systemctl start crond 启动服务
systemctl stop crond 关闭 服务
systemctl reload crond 重载服务配置
chkconfig –level 35 crond on 开启自启动
配置文件
/etc/cron.deny :配置中该文件中的用户不能使用cron
/etc/cron.allow :
/etc/crontab :系统的计划任务
/etc/cron.d/*
命令
用法:
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging
crontab -l 查看定时任务列表 其实就是查看/var/spool/cron/<username>文件
crontab –e 编辑定时任务 保存到/var/spool/cron/<username>中 /var/spool/cron/<username> 后面为用户名
crontab -uroot -e 给root用户编辑定时任务
crontab -r 删除定时任务
cat /etc/crontab
查看任务写法:系统的定时任务需要写在该文件中
*/2 * * * * echo `date` >> /test.txt 每隔2分钟输出时间到文件
*/30 [3-5],[17-20] * * * /bin/sh /home/omc/h.sh 每天3-5,17-20每隔30分钟执行一次脚本
* 23,00-07/1 * * * /bin/sh /home/omc.h.sh 当天23点,第二天0点到凌晨7点 每隔1分钟执行一次脚本
00 11 * 4 1-3 /bin/sh /home/omc/h.sh 每年的4月份每周的周一到周三的11点执行脚本
0 * * * * /bin/ls 每月每天每小时的第 0 分钟执行一次 /bin/ls
0 6-12/3 * 12 * /usr/bin/backup 在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 在第0 分钟执行一次 /usr/bin/backup
20 0-23/2 * * * echo "haha" 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
- [username] command 分(0-59) 时(0-23) 天(1-31) 月(1-12) 周(0-6) [用户] 执行的命令
当 分为 时表示每分钟都要执行 program,时 为 时表示每小时都要执行程序,其馀类推
星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
小 结:
数字的表示最好用为阿拉伯数字显示
周和日最好不要同时用 0和7都可表示周天
定时任务要加注解
可以定向到日志文件或者空文件
定时任务一定是绝对路径,且目录必须存在才能出结果
crontab 服务一定要开启运行
- [username] command 分(0-59) 时(0-23) 天(1-31) 月(1-12) 周(0-6) [用户] 执行的命令
系统级任务:
**
root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。
每十秒执行一次任务:
# crontab -e
* * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如01:00、 02:00、 03:00...执行脚本
* * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如01:10 、02:10、 03:10...执行脚本
* * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如01:20 、02:20、 03:20...执行脚本
* * * * * sleep 30; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如01:30 、02:30 、03:30...执行脚本
* * * * * sleep 40; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如01:40 、02:40 、03:40...执行脚本
* * * * * sleep 50; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如01:50 、02:50 、03:05...执行脚本
都是在01:00、 02:00、 03:00...执行任务,只是后面几个任务会先睡个几十秒。
anacon:
执行corontab因为一些原因没有执行的任务,如超时,停电等。
2、at
安装
yum install at -y
配置文件
/etc/at.deny :在该配置文件中的用户不允许执行计划任务
/etc/at.allow :不在该配置文件中的用户不允许执行计划任务
启动
systemctl start atd
示例
#五分钟后执行的任务
at now + 5 minutes
at> echo ttt> at.txt
at><EOT> #这里输入ctrl+d就好出现<EOT>的字样,代表结束