计划任务管理

a)  At 一次性人物设置

   一次性计划任务

   服务脚本名称:/etc/init.d/atd

   设置格式:at [HH:MM] [yyyy-mm-dd]

   计划执行任务的时间、日期必须安排在当前系统的时刻之后,否则无法正确设置计划任务

   若只指定时间则表示当太的该时间,若只指定日期则表示该日期的当前时间

   可以在at交互环境中输入多条命令,最后按Ctrl+D组合键提交

   对应的系统服务atd必须已经运行,否则可能会出现错误提示:Can't open /var/run/atd.pid to signal atd. No atd running?

 

Eg:先通过date确认当前系统时间,并设置2011.2.21的14:55分自动执行的任务:统计该时间点由root用户运行的进程的数量,并将该数值保存到“/tmp/ps.root”中Linux—计划任务管理_第1张图片

Eg:设置一条计划任务,在当天的21:30自动关闭当前系统Linux—计划任务管理_第2张图片

b) Crontab 周期性任务设置

   按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务

   服务脚本名称:/etc/init.d/crond

   启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行

   全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下与本帐号同名的文件即可

   主要设置文件:

全局配置文件,位于文件:/etc/crontab

系统默认的设置,位于目录:/etc/cron.*/

用户定义的设置,位于文件:/var/spool/cron/用户名

 

1)  Crontab 的配置文件和目录

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

设置维护linux系统所需的任务,由linux系统及相关程序在安装时自动设置

eg:

[root@localhost ~]# cat /etc/crontab

SHELL=/bin/bash                      设置执行计划任务的shell环境

PATH=/sbin:/bin:/usr/sbin:/usr/bin        定义可执行命令及程序的路径

MAILTO=root                    将任务输出信息发送到指定的用户邮箱

HOME=/                              执行计划任务时使用的主目录

# run-parts                    

01 * * * * root run-parts /etc/cron.hourly    设置每小时执行的计划任务

02 4 * * * root run-parts /etc/cron.daily      设置每天执行的计划任务

22 4 * * 0 root run-parts /etc/cron.weekly    设置每周执行的计划任务

42 4 1 * * root run-parts /etc/cron.monthly   设置每月执行的计划任务

 

 

 /var/spool/cron/ —— 用户cron任务的配置文件存放目录

由用户自行设置(使用crontab命令)的cron计划任务将被保存到目录/var/spool/cron中,文件名与用户名相同

Eg:root用户的cron计划任务保存在配置文件/var/spool/cron/root中

 Crond守护进程会自动检查/etc/crontab文件、/etc/cron.d/目录以及/var/spool/cron目录中的改变,所以修改后无需重启

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

 - e :设置计划任务列表

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

 - l :列表显示计划任务

 - r :删除计划任务列表

1.         编辑用户的计划任务列表

crontab -e [-u 用户名]Linux—计划任务管理_第3张图片

 时间数值的特殊表示方法

*      表示该范围内的任意时间

,   表示间隔的多个不连续时间点

      表示一个连续的时间范围

/     指定间隔的时间频率

 应用示例

0 17 * * 1-5                周一到周五每天17:00

30 8 * * 1,3,5   每周一、三、五的8点30分

0 8-18/2 * * * 8点到18点之间每隔2小时

0 * */3 * *                  每隔3天Linux—计划任务管理_第4张图片

Eg:

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

50 7 * * * /sbin/service sshd start

50 22 * * * /sbin/service sshd stop

b)  每隔5天清空一次FTP服务器公共目录“/var/ftp/pub”中的数据

0 0 */5 * * /bin/rm -rf /var/ftp/pub/*

c)  每周六的7:30重新启动系统中httpd服务

30 7 * * 6 /sbin/service httpd restart

d)  每周一、周三、周五下午17:30使用tar命令自动备份/etc/httpd目录

30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd

 普通用户执行crontab -e 设置自己的计划任务

Eg:jerry设置在每周日晚上23:55将/etc/passwd文件内容复制到宿主目录中,保存为pwd.txt文件

Crontab - e - u jerry

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

2. 查看用户的计划任务列表

crontab -l [-u 用户名]

eg:查看用户root自己的计划任务

crontab - l 

eg:查看用户jerry的计划任务

crontab - l   - u jerry

3.   删除用户的计划任务列表

crontab -r [-u 用户名]

欢迎关注微信公众号:小温研习社

Linux—计划任务管理_第5张图片