Linux计划任务介绍

Linux的计划任务是系统管理方面的一个重要内容,是系统自动完成工作的一种实现方式,正因为有了计划任务,我们才可以完全实现系统管理的脚本化和自动化。

关于计划任务,Linux根据用户需要提供了两种服务,一种是atd服务,另一种是cron服务

1. atd服务

如果你的计划任务只要执行一次,那么就请你使atd服务。在默认情况下,Linux系统是开启了atd这个服务的。如果不确认你的Linux是否开启了atd服务,请使用下面这个命令查看:

# /etc/init.d/atd status

  atd (pid  3016) 正在运行...

从上面可以看出atd服务是启动的。如果你的atd服务没有启动可以使用

 # /etc/init.d/atd start

来启动你的atd服务。

atd服务中我们经常要使用到的是at命令,与at命令相关的有/etc/at.deny 和/etc/at.allow两个文件用来过滤哪些用户可以使用at命令。Linux 预设情况下,只有/etc/at.deny 这个文件,且这个文件内容为空,由于内容没有任何使用者,所以所有人都可以使用at命令。如果不想要某个使用者使用at时,那么将该使用者登录用户名写到/etc/at.deny 这个文件中即可。

Linux系统中还可以自行创建/etc/at.allow文件,使得写在这个文件中的使用者才能使用at,没有在这个文件中的使用者则不能使用at ( 即使没有写在at.deny 当中)。如果这两个文件都不存在,那么只有root可以使用at命令。

下面来看一下如何使用at命令:

at [-m]  TIME     //下达计划任务,之后会出现编辑窗口,写入要执行的命令

-m :执行 at 计划任务时,将屏幕输出结果mail给下达指令的使用者。
 
 TIME的格式具体请参照我下面的列子吧。
# at 04:00 2011-09-20  //在2011年9月20号上午四点执行命令。
# at 11pm                    //今天晚上11点执行,如果已经过了,等到明天晚上
# at 08am + 3 weeks  //三周后的上午八点执行

此外还有两个常用命令:
atq           //查看计划任务
atrm          //删除计划任务

2. crond服务

2.1 crond服务简介

Linux任务调度的工作主要分为以下两类:

  • 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  • 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

这个时候可以用cron来帮助系统进行任务调度。cron可以根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。

crond服务通过shell和Linux/Unix下的crontab(计划任务控制)的方式实现。cron是计划任务的称呼,crond是后台进程,而crontab则是定制好的计划任务表。cron 这个名字来自 “chronos”,一个古希腊语“时间”的意思。crond进程每分种会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

要使用 crond服务,你必须安装了vixie-cron RPM 软件包,而且必须在运行crond服务。要判定该软件包是否已安装,使用rpm -q vixie-cron命令。要判定该服务是否在运行,使用== /sbin/service crond status==命令。

crond服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

你也可以让这个服务在系统启动的时候自动启动,只需要在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start
2.2 crond服务的使用

crond服务提供crontab命令来设定crond服务,以下是这个命令的一些参数与说明:

  • crontab -u //设定某个用户的cron服务,一般这个参数只允许root使用
  • crontab -l //列出某个用户cron服务的详细内容
  • crontab -r //删除某个用户的cron服务
    注意:如果有多条计划任务crontab -r会删除用户所有的计划,如果你只想删除其中一条计划任务,请使用crontab -e 命令或者直接编辑/var/spool/cron/root文件。
  • crontab -e //编辑某个用户的cron服务
    crontab -e命令编辑的是/var/spool/cron下对应用户的cron文件

现举例说明:

# crontab -u root –l      //root查看自己的cron设置
# crontab -u fred –r     // root想删除fred的cron设置
# crontab -u root –e     //编辑root的crontab文件

我们也可以直接修改/etc/crontab文件,crontab文件有自己的格式,具体如下:

Minute  Hour   Day    Month   Dayofweek   command
分钟      小时     天       月           天每星期        命令

每个字段代表的含义如下:

Minute             每个小时的第几分钟执行该任务
Hour               每天的第几个小时执行该任务
Day                每月的第几天执行该任务
Month              每年的第几个月执行该任务
DayOfWeek          每周的第几天执行该任务
Command            指定要执行的程序

举例如下:

5       *       *           *     *     ls    //指定每小时的第5分钟执行一次ls命令
30      5       *           *     *     ls    //指定每天的 5:30 执行ls命令
30      7       8           *     *     ls    //指定每月8号的7:30分执行ls命令
30      5       8           6     *     ls    //指定每年的6月8日5:30执行ls命令
30      6       *           *     0     ls    //指定每星期日的6:30执行ls命令

注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等

30     3     10,20     *     *     ls     //每月10号及20号的3:30执行ls命令

注:“,”用来连接多个不连续的时段

25     8-11    *       *     *     ls     //每天8-11点的第25分钟执行ls命令

注:“-”用来连接连续的时段

*/15   *       *       *     *     ls     //每15分钟执行一次ls命令(即每个小时的第0 15 30 45 60分钟执行ls命令)
30     6     */10      *     *     ls  //每个月中,每隔10天6:30执行一次ls命令(即每月的1、11、21、31日是的6:30执行一次ls命令)
50     7      *        *     *     root run-parts /etc/cron.daily   //每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行脚本

注:run-parts参数表示,执行后面目录中的所有可执行文件,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了

30     5      *        *     *     ls >/jp/test 2>&1   //每天5:30执行ls命令,并把结果输出到/jp/test文件中

注:2>&1 表示执行结果及错误信息

记住几个特殊符号的含义:

“*” 代表取值范围内的数字,

“/” 代表"每",

“-” 代表从某个数字到某个数字,

“,” 分开几个离散的数字

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值