linux下计划任务详解

1、在未来的某个时间点执行一次任务;有at和batch两命令

at格式如下:

at 时间

at> 命令

at> Ctrl+d  #提交的意思

指定时间:

绝对时间:HH:MM 或 DD.MM.YY 或 MM/DD/YY

相对时间:now+(分钟或小时或天数或周)

单位:minutes, hours, days, weeks

模糊时间:noon, midnight, teatime

计划任务的行结果:将以邮件的形式发送给安排任务的用户

at -l      相当于  atq  #查询列出已有任务

at -d 作业号  相当于 atrm 作业号  #删除已设的任务

at命令实例:

# at 3pm+3 days

at> /bin/ls

at> <EOT> 

job 3 at 2016-06-08 15:00 

2、周期性地执行任务;有cron和anacron

  cron:分为系统cron任务和用户cron任务且是一个不间断运行的服务

系统cron任务:配置文件在/etc/crontab

  输写格式: 分钟  小时  天  月  周  用户  任务

用户cron任务:配置文件在/var/spool/cron/用户名

   输写格式:  分钟  小时  天  月  周  任务

时间取值范围如下:

 分钟:0-59

 小时:0-23

 天:1-31

 月:1-12

 周:0-7,其中0和7都表示周日

时间通配表示:

 *: 对应时间的所有有效取值

 2 * * * * 代表每小时的第2分钟执行

 5 * * * 7 代表每周日每小时第5分钟执行

 10 11 3 6 * 代表每年6月3号11点10分执行

,: 离散时间点: 

 15,45 01 * * 3,0 代表每周三和周日凌晨1点第15分和第45分执行

-:连续时间点:

 1 03 * * 1-5周一至周五凌晨3点1分执行

/值: 对应取值范围内每隔多长时间执行一次

     */5 * * * *   代表每5分钟执行一次

     06 */3 * * *  代表每隔3小时第6分钟执行一次

     29 03 */5 * *  代表每隔5天凌晨3点29分执行一次

     计划任务执行结果将以邮件形式发送给管理员:

cron的环境变量:cron执行所有命令都会去找PATH环境变量指定的路径

2.1. 如果用户没有登入系统,将无法找到执行的命令,所以请用绝对路径

     例如:*/3 * * * * /bin/cat /etc/inittab &> /dev/null 

2.2. 如果计划任务执行脚本,请先定义PATH路径

     例如: PATH=/bin:/sbin:/usr/bin:/usr/sbin

2.3. 用户任务的管理命令:crontab

 -l: 列出当前用户的所有cron任务

 -e: 编辑 

 -r: 移除所有任务

 -u 用户名: 管理其用户的cron任务

anacron: 是cron的补充,能够实现让cron因特殊原因在过去的时间该执行而未执行的任务

      再恢复正常执行一次;其配置文件在/etc/anacron,系统默认不开启此服务

 注意:无论是corn还是anacron计划任务,必须保证这两个服务必须开启,才能执行对应计划任务

wKioL1cov7nwATXoAAEc68N4lF0708.jpg

3.实例:每周六凌晨1点01分备份/etc/passwd,/etc/group,/etc/shadow文件,保存至/backup目录下

   crontab -e

01 01 * * 06 /bin/tar cjf /backup/user-passwd.`date +%F`.tar.bz2 /etc/passwd /etc/group /etc/shadow

4.实例:每20秒执行一次who命令

   crontab -e

* * * * * /usr/bin/who

* * * * * sleep 20;/usr/bin/who

* * * * * sleep 40;/usr/bin/who