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] filecrontab [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/ls0 6-12/3 * 12 * /usr/bin/backup 在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 在第0 分钟执行一次 /usr/bin/backup20 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 minutesat> echo ttt> at.txtat><EOT> #这里输入ctrl+d就好出现<EOT>的字样,代表结束
