Linux-计划任务管理
10.2 计划任务管理
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”中
Eg:设置一条计划任务,在当天的21:30自动关闭当前系统
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用户名]
时间数值的特殊表示方法
*
表示该范围内的任意时间
,
表示间隔的多个不连续时间点
-
表示一个连续的时间范围
/
指定间隔的时间频率
应用示例
0 17 * * 1-5
周一到周五每天17:00
30 8 * * 1,3,5
每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * *
每隔3天
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用户名]