|
|
- 应该说,所有的操作系统都提供了计划任务功能,用来实现定时执行某个操作或定期执行重复的操作,例如定时提醒,定期备份等。
- 如上所述,计划任务一般分两种,指定时间执行一次的任务和定期重复执行的任务(呵呵,我的分类,不一定准确),Windows系统下的设置更为灵活,有位朋友说Windows下无法实现每个5分钟执行任务,我专门看了,可以的。
- 说明一下,指定时间执行一次的任务只执行一次,定期重复执行的任务每个一定时间自动重复执行。各种杀毒软件都具有这个功能。
-
- <一>Linux下的计划任务实现.
-
- 1. 指定时间执行一次的任务实现,使用at命令(各用户独自设置)
- 1)#at 时间设置
- >输入命令
- >ctrl+D结束输入,产生任务
- 时间说明:时间分为绝对时间和相对时间。绝对时间:直接设置某个固定的时间;相对时间:从某个时间起经过一段时间后的时间
- 绝对时间:[月/日/年] hh:mm //[]为可选,无表示当天或最近一天
- 相对时间: 绝对时间+时间段 //时间段为:数字hours(或minutes,days,weeks)
- 举例:
- a)明天上午8点给root发一份邮件,告诉他系统正常
- #at 8 tomorrow
- >echo "System is OK!" |mail -s "mess" [email]root@syd168.com[/email]
- >CTRL+D
- b)2008年8月1日上午8点30告诉root,建军节到了
- #at 8/1/2008 8:30
- >echo "Today is army day!" |mail -s "hi" root
- >CTL+D
- c)5天后的下午3:45告诉user1,Tom结婚,别忘记!
- #at 15:45+5days
- >echo "Tom will marry to tom1"|mail -s "from root" user1
- >CTRL+D
-
- 2)显示所有的定期计划任务
- #atq //显示中最左侧列为任务ID
- 3)删除任务
- #atrm 任务ID
- 4)限制用户使用定时任务
- /etc/at.allow 中列出的为用户的用户,一行一个,该文件开始没有
- /etc/at.deny 中列出的为禁止使用的用户
- 请大家自己判断二者都列出的用户是否可以执行at?
- 2.定期重复执行的任务的实现。主要用于重复执行,如备份
- Linux中的定期任务分为用户级别的和系统级别的。用户级别的优先执行。并且需要crond服务,所以要保证该服务运行!用户定期任务放在/var/spool/cron下,并以用户名命名,系统定期任务放在/etc/crontab中,以及一个特殊文件夹下。
- 1)用户级别定期任务
- a)#crontab -e [-u user] //编辑/添加任务 其他用户的root允许
- b)#crontab -l [-u user] //列出定期任务
- c)#crontab -r [-u user] //删除定期任务,删除所有
- *任务文件格式:
- 分钟 小时 日 月 星期 命令
- 表示在按指定的时间定期执行命令
- 如: 5 3 2 * * ls 表示 每月2号5:3 执行ls命令
- *特殊时间格式设置
- a)范围表示 - 如 2-3
- b)多项表示 , 如1,3,5
- c)间隔表示 / 如 2-12/ */2
- *命令说明
- 直接输入命令,如果需要换行,请添加%
- *使用举例
- a)每天晚上3点30备份自己的主要文件
- 30 3 * * * cp -R ~/main ~/backup
- b)每年12月26日,3-8点每隔1小时, 8-12点每隔2小时提醒自己,生日到了。
- * 3-8,8-12/2 26 12 * echo "Today is your birthday!"|mail -s "message" $USER
-
- 2)系统级别的定期任务
- 由root添加,删除
- 第一种方式:直接编辑/etc/crontab文件,添加定期任务,/etc/crontab文件的格式:
- 分 时 日 月 星期 执行用户 命令
- 或者:
- 分 时 日 月 星期 执行用户 run-parts 命令文件位置
-
- 例如:
- 每天晚上0点,由root执行/etc/的备份,应该在/etc/crontab中添加:
- * * * * * root cp -R /etc/* /backup
- 或者:
- * * * * * root run-parts /etc/cron/cron.syd //将命令脚本放在/etc/cron.syd下,这需要自己建
- 第二种,将定期任务脚本直接放置在几个默认定期执行的目录下,他们分别是: /etc/cron.weekly,/etc/cron.monthly,/etc/cron.hourly,/etc/cron.minutely。注意,直接将命令脚本文件防止在合适的位置,不要编辑/etc/crontab文件,因为这些目录下的命令是自动执行的 !至于放在哪个目录下,我想大家一看就知道了,除非英语是0级,呵呵。
- 3)限制用户使用用户级别的定期任务
- /etc/cron.allow中列出允许的用户,没有用户表示不限制任何用户
- /etc/cron.deny 中列出禁止使用定期任务的用户
- 4)修改定期任务自动执行后,发送邮件的接受者
- Linux系统提供的定期任务在执行后都想指定的用户发送邮件,表示成功或失败。在/etc/crontab中指定了接受邮件的用户,我们可以直接修改,默认的是root
复制代码 |
|