码迷,mamicode.com
首页 > 系统相关 > 详细

Linux计划任务

时间:2015-09-18 12:14:56      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:linux crontab 周期计划任务

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的计划任务


其他任务的配置方法同上, 配置命令文件有的特殊符号需要转义符\ 例如\%


Linux计划任务

标签:linux crontab 周期计划任务

原文地址:http://jzrobbie.blog.51cto.com/6535329/1695879

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!