计划任务管理
1、at命令—— 一次性任务设置
在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
服务脚本名称:/etc/init.d/atd
设置格式:at [HH:MM] [yyyy-mm-dd]
[root@localhost ~]# service atd start ==>启动atd服务 [root@localhost ~]# at 11:35 at> reboot at>==>按ctrl + D 提交任务,则自动进入这里 job 1 at 2013-03-16 11:35 [root@localhost ~]# atq 1 2013-03-16 11:35 a root
==>接下来我郁闷了好久,因为等了3分钟还没有结果,我是11:30分设置的这个计划任务,按道理早应该重启了,之后才发现,原来我虚拟机的时钟和我自己的电脑不同步,我自己的电脑快了5分钟,啊。。。白白等了N个3分钟还在不断找原因,执行了date命令才发现原来现在才11:30。。。
2、crontab命令
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
(1)、先来看一下/etc/crontab文件的内容:
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash 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
注意:
启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行;
全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下与本帐号同名的文件即可
(2)、管理cron计划任务
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
(root用户可以管理指定用户的计划任务;普通用户只能管理自己的计划任务)
(备注:用户只需执行“crontab -e”命令后会自动调用文本编辑器(默认为vi)并打开“/var/spool/cron/用户名”文件,无需手动指定文件位置)
(3)、crontab应用简单举例
1)、示例1:root用户
需求: 每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包备份/etc/httpd目录
[root@localhost ~]# crontab -e 50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 * */5 * * /bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd
2)、示例2:linuxidc用户
需求:每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件
[root@localhost ~]# crontab -e -u linuxidc 55 23 * * 7 /bin/cp /etc/passwd /home/linuxidc/pwd.txt
3)、示例3:
root用户查看自己的计划任务列表;查看并删除linuxidc用户设置的计划任务
[root@localhost root]# crontab -l 50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 * */5 * * /bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd
[root@localhost root]# crontab -l -u linuxidc 55 23 * * 7 /bin/cp /etc/passwd /home/linuxidc/pwd.txt [root@localhost root]# crontab -r -u linuxidc [root@localhost root]# crontab -l -u linuxidc no crontab for linuxidc [root@localhost root]#
从上面这3个例子简单总结一下crontab任务的配置格式:
(1) 时间周期设置: 任务内容设置:
50 3 2 1 * run_command
分钟 小时 日期 月份 星期 命令
字段 |
说明 |
分钟 |
取值为从0到59之间的任意整数 |
小时 |
取值为从0到23之间的任意整数 |
日期 |
取值为从1到31之间的任意整数 |
月份 |
取值为从1到12之间的任意整数 |
星期 |
取值为从0到7之间的任意整数,0或7代表星期日 |
命令 |
要执行的命令或程序脚本 |
前5个字段指定任务重复执行的时间规律,第6个字段用于指定具体的任务内容
crontab任务配置记录中,所设置的命令在“分钟+小时+日期+月份+星期”都满足的条件下才会运行。
(2)、时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
应用示例:
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * * 每隔3天
操作系统DOS命令复习点汇总
[DOS]2015年5月11日操作系统DOS命令复习点(120)
[DOS]2015年4月14日操作系统DOS命令复习点(119)
[DOS]2015年4月13日操作系统DOS命令复习点(118)
[DOS]2015年4月13日操作系统DOS命令复习点(117)
[DOS]2015年4月13日