您的位置:首页 > 运维架构 > Linux

Linux计划任务

2015-09-18 07:39 591 查看
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的计划任务

其他任务的配置方法同上, 配置命令文件有的特殊符号需要转义符\ 例如\%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: