1、crontab

链接

启动

  1. systemctl status crond 查看服务状态
  2. systemctl start crond 启动服务
  3. systemctl stop crond 关闭 服务
  4. systemctl reload crond 重载服务配置
  5. chkconfig level 35 crond on 开启自启动

配置文件

  1. /etc/cron.deny :配置中该文件中的用户不能使用cron
  2. /etc/cron.allow :
  3. /etc/crontab :系统的计划任务
  4. /etc/cron.d/*

命令

  1. 用法:
  2. Usage:
  3. crontab [options] file
  4. crontab [options]
  5. crontab -n [hostname]
  6. Options:
  7. -u <user> define user
  8. -e edit user's crontab
  9. -l list user's crontab
  10. -r delete user's crontab
  11. -i prompt before deleting
  12. -n <host> set host in cluster to run users' crontabs
  13. -c get host in cluster to run users' crontabs
  14. -s selinux context
  15. -x <mask> enable debugging
  1. crontab -l 查看定时任务列表 其实就是查看/var/spool/cron/<username>文件
  2. crontab e 编辑定时任务 保存到/var/spool/cron/<username>中 /var/spool/cron/<username> 后面为用户名
  3. crontab -uroot -e root用户编辑定时任务
  4. crontab -r 删除定时任务

cat /etc/crontab

查看任务写法:系统的定时任务需要写在该文件中

  1. */2 * * * * echo `date` >> /test.txt 每隔2分钟输出时间到文件
  2. */30 [3-5],[17-20] * * * /bin/sh /home/omc/h.sh 每天3-5,17-20每隔30分钟执行一次脚本
  3. * 23,00-07/1 * * * /bin/sh /home/omc.h.sh 当天23点,第二天0点到凌晨7 每隔1分钟执行一次脚本
  4. 00 11 * 4 1-3 /bin/sh /home/omc/h.sh 每年的4月份每周的周一到周三的11点执行脚本
  5. 0 * * * * /bin/ls 每月每天每小时的第 0 分钟执行一次 /bin/ls
  6. 0 6-12/3 * 12 * /usr/bin/backup 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 在第0 分钟执行一次 /usr/bin/backup
  7. 20 0-23/2 * * * echo "haha" 每月每天的午夜 0 20 分, 2 20 分, 4 20 分....执行 echo "haha"
  8. 30 6 */10 * * ls 意思是每月的1112131日是的630执行一次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 服务一定要开启运行

系统级任务:

**
root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

每十秒执行一次任务:

  1. # crontab -e
  2. * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如0100 0200 0300...执行脚本
  3. * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如0110 0210 0310...执行脚本
  4. * * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如0120 0220 0320...执行脚本
  5. * * * * * sleep 30; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如0130 0230 0330...执行脚本
  6. * * * * * sleep 40; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如0140 0240 0340...执行脚本
  7. * * * * * sleep 50; /usr/local/cc.sh >>/usr/local/log.txt 2>&1 会在每分钟如0150 0250 0305...执行脚本
  8. 都是在0100 0200 0300...执行任务,只是后面几个任务会先睡个几十秒。

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>的字样,代表结束