Linux的计划任务主要分两种
一个为一次性执行任务, 另一个为周期性执行任务
一次性执行任务
命令: at和batch
at命令是交互式输入
[root@centos ~]# at now+1min at> ls / at> <EOT> job 10 at 2015-09-17 22:31
第一行at TIME, 输入要执行的命令后用Ctrl+d提交任务
TIME:可以用now+5hour, 或直接输入时间12:43,可以用man at来查询时间输入格式
atq来查看已有任务队列
[root@centos ~]# atq 13 2015-09-17 22:40 a root [root@centos ~]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 1 message 1 new >N 1 root Thu Sep 17 22:41 35/583 "Output from your job " #任务完成后结果会发到邮箱, 可用mail来查看
-d #:删除指定任务
[root@centos ~]# atq 16 2015-09-17 22:52 a root 17 2015-09-17 22:58 a root [root@centos ~]# at -d 16 [root@centos ~]# atq 17 2015-09-17 22:58 a root
batch命令和at命令用法大致相同, 只是不能指定运行时间, 系统会自动挑选系统不忙时运行
周期性任务
在centos6中主要用crontab命令来执行周期性任务. 它的运行基于以个进程crond, 所以在配置计划周期任务前要先检查这个进程时候运行
[root@centos ~]# service crond status crond (pid 2238) is running... [root@centos ~]# chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
配置cron计划任务其实就是修个两个文件
1, /etc/crontab
这个文件修改系统计划任务, 它可以指定不同用户的计划任务, 只有root才能修改
注意, 同时它也提供了cron任务运行时的环境变量, 因为运行任务时, 用户不是登录的,所以不能用系统的环境变量等. 如果有需要运行程序文件时, 最好指定全路径名, 或者修改这个文件.
root用户会收到执行结果文件, 而不是任务的执行用户mai
[root@centos ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
下图的注释,是定义周期时间的表示法, 从左到右的星号分别代表, 分钟, 小时, 月的第几天, 月, 星期几
现在举个例子, 如果让user2 每5分钟运行程序 ls /, 在/etc/crontab文件中添加命令
*/5 * * * * user2 ls /
1, *相当于所有时间点的通配符, 如果所有都用*, 就表示每月每天每小时的每分钟都运行
如果要每天运行一次 0 0 * * * user2 echo "test" 这个表示每天午夜12点0分运行
如果改成* 0 * * * user2 echo "test" 表示每天午夜12点这个小时内没分钟运行一次, 相当于运行60次每天.
2, crontab也可以设置成每几分钟,或几个小时执行一次
*/5 * * * * 每5分钟执行一次
0 */5 * * * 每5个小时执行一次
3, 还可以指定一个执行区间
0-6/2 * * ** 每个小时的0-6分钟内, 每2分钟执行一次
4. 直接指定执行时间
0 2,4,6 * * * 每天的凌晨2 ,4, 6点执行
2.第二种配置计划任务的文件是/var/spool/cron/用户名
这个文件可以之间编辑, 和上面的区别是不用指定运行用户名
也可以用命令编辑
crontab -e 打开临时的编辑文档, 编辑当前用户的计划任务
crontab -e -user user2 编辑指定用户的计划任务
crontab -r 或 crontab -r -user user2撤销所有计划任务或指定用户的计划任务, 其实就是删除计划任务文件
crontab -l 或 crontab -l user user2 查看所有或指定的计划任务, 但不能查看/etc/crontab的计划任务
其他任务的配置方法同上, 配置命令文件有的特殊符号需要转义符\ 例如\%
原文地址:http://jzrobbie.blog.51cto.com/6535329/1695879