(转)Linux——计划任务管理


Linux——计划任务管理
2011-05-05 10:25

在Linux操作系统中,除了用户即时执行的命令操作以外,还以为配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如:定期备份、定期采集系统检测数据等。)RHEL5系统中默认安装了at、vixie-cron软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务的设置。

1、at 一次性任务设置:

使用at命令设置的计划任务只在指定的时间点执行一次,有一个前提条件是,对应的系统服务atd必须已经运行。

service atd status

service atd start

chkconfig --level 35 atd on

使用at命令设置计划任务时,在命令中依次指定计划执行任务的时间、日期作为参数(若在指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条命令,可以依次设置多条命令,最后按Ctrl+D提交任务即可。所设置的命令操作将在计划的时间点被依次执行。

需要注意的是,计划执行任务的时间,日期必须确保在当前系统的时刻之后,否则将无法正确设置计划任务。

eg:使用date命令确保当前的系统时间,并设置在2011年5月18日的10:50分自动执行以下任务:统计该时间点系统中由root用户运行的进程的数量,并将该数值保存到“/tmp/ps,root”

eg:在当天11点时自动关闭当前系统

对于已经设置但还尚未执行(未到时间点)的计划任务,可以通过atq命令进行查询,已经执行的at任务将不会再出现在列表中。

查询当前系统中设置的at计划任务列表

删除计划于11:00执行的关机任务。

简单吧,这就是at一次性计划任务啦!!!

2、crontab 周期性任务设置:

使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复性系统管理任务的操作(如:定期备份)。启用周期性任务也有一个前提条件,即对应的系统服务crond必须已经运行。

service crond status

chkconfig --level 35 crond on

(1)、crontab的配置文件和目录

crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件进行设置。

1>:/etc/crontab——系统任务配置文件

在"/etc/crontab"文件中设置的是维护Linux系统所需的任务,一般在系统及程序安装时自动设置,不需要认为地修改。

查看“/etc/crontab”系统计划任务配置文件的内容:

根据"/etc/crontab"配置文件中的设定,crond将按照不同的周期重复执行相应目录中的任务脚本文件。

2>:/var/spool/cron/——用户cron任务配置存放目录

由用户自行配置(使用crontab命令)的cron任务将被保存在目录“/var/spool/cron”中,文件名与对应的用户账号同名

crond守护进程每分钟都会检查“/etc/crontab”文件、“/etc/cron.d”目录以及"/var/spool/cron/"目录中的改变,如果发现有配置更改,他们就会被载入内存,所以当某个“crontab”文件改变后并不需要重新启动crond守护进程就可以使配置生效。

(2)、使用crontab命令管理用户的计划任务

设置用户的周期性计划任务列表主要通过crontab命令进行,结合不同的选项可以完成不同的计划任务管理操作,常用的选项如下:

-e:编辑计划任务列表

-u:指定所管理的计划任务属于那个用户,默认时针对当前用户(自己),一般只有root用户有哦权限使用此选项(用于编辑、删除其他用户的计划任务)

-l:列表显示计划任务

-r:删除计划任务列表

1>: 编辑计划任务的书写格式:

01 * * * * root run-parts /etc/cron.hourly   |  格式为  分钟 小时 日期  月份  星期  执行的命令

eg:除了“*”以外,还可以使用减号“-”、逗号“,”、斜杠“/”与数字构成表达式来表示比较负责的时间关系。

>:减号“-”可以表示一个连续的时间范围,如“1-4”表示整数1、2、3、4。

>:逗号“,”可以表示一个间隔的不连续范围,如:“3、4、6、8”。

>:斜杠符号“/”可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔3天。

eg 1 :由root用户设置一份crontab计划任务列表,完成sshd服务:

每天早上7:50自动开启sshd,22点50时关闭sshd服务

crontab -e

50 7 * * * /sbin/service sshd start

50 22 * * * /sbin/service sshd stop

eg 2 :为vliver用户设置计划任务,在每周日晚上的23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为“pwd.txt”文件。

crontab -e -u vliver

55 23 * * 7 /bin/cp /etc/passwd /home/vliver/pwd.txt

因各条计划任务在执行时并不需要用户登录,所以在任务配置记录中的命令建议使用绝对路径,以避免因缺少执行路径而无法执行命令的情况。另外,在设置非每分钟都执行的任务时,“分钟”字段也应该填写一个具体的时间数值,而不要保留为默认的“*”,否则将会每分钟执行一次计划任务。

1>:crontab -l 查看用户的计划任务列表

2>:crontab -l -u vliver 确认vliver用户的计划任务列表的内容

3>:crontab -r 删除任务计划

注:在设置用户的crontab计划任务的过程中,由于每一条记录只能运行一行命令,难以完成更复杂的系统管理任务操作,因此在实际工作中,当需要安装同一周期运行多项任务时,通常会将相关命令操作编写成脚本文件,然后在计划任务中加载该脚本并执行。嘿嘿!!!



猜你喜欢

转载自mlxia.iteye.com/blog/1113982