商城网站开发的任务书,网线制作实验步骤,做童鞋的一些外贸网站,网站短链接生成十六、 计划任务 在很多时候为了自动化管理系统#xff0c;我们都会用到计划任务#xff0c;比如关机#xff0c;管理#xff0c;备份之类的操作#xff0c;我 们都可以使用计划任务来完成#xff0c;这样可以是管理员的工作量大大降低#xff0c;而且可靠度更好。 l… 十六、 计划任务 在很多时候为了自动化管理系统我们都会用到计划任务比如关机管理备份之类的操作我 们都可以使用计划任务来完成这样可以是管理员的工作量大大降低而且可靠度更好。 linux 系统支持一些能够自动执行任务的服务我们称为计划任务。 LINUX 有如下三种计划任务 at指定一个时间执行一个任务 适用一个或多个任务执行一次后就不用 cron根据一个时间表自动执行任务 使用一个或多个任务周期性执行 系统级别的计划任务及其扩展 anacron在一个指定时间间隔错过后自动执行任务 1 、 at: 安排一个任务在未来执行需要一个 atd 的系统后台进程 检查 atd 进程是否启动 [rootcentos61 桌面 ]# service atd status atd (pid 2274) 正在运行 ... [rootcentos61 桌面 ]# chkconfig |grep atd atd 0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭 如果未启动可以使用如下命令 [rootcentos61 桌面 ]# service atd start 正在启动 atd [ 确定 ] [rootcentos61 桌面 ]# chkconfig atd on 常用指令: at:安排延时任务 具体使用方法: 例 1: #at now2 minutes 回车 输入要执行的命令 ctrld 结束输入 [roottest ~]# at now2 minutes at wall Aixi at EOT job 2 at 2010-06-18 16:36 EOT是 ctrld 中断输入这个命令意思是发送一个广播内容是 Hello Aixi.具体时间可以改,单位可以改,可以用 hours,months,years,weeks 等. 例 2 我们还可以跟具体时间 [roottest ~]# at 16:39 dec 10 at Hello Aixi at EOT ctrld 结束输入 job 3 at 2010-12-10 16:39 意思是在今年的 12 月 10 日 16:39 运行这个命令.如果不加月和日,默认就是今天. Atq:查询当前的等待任务 用 atq 来查询已经运行的任务就消失了。这就是 at 计划任务的重点只运行一次 atrm删除等待任务 启动计划任务后如果不想启动设定好的计划任务可以使用 atrm 命令删除。 格式atrm 任务号 命令后面跟计划任务编号如果不跟就会删除这个用户所有的计划任务。 例 3 atrm 10 //删除计划任务 10 atq //查看计划任务是否删除 at 将要运行的命令以文本形式写入/var/spool/at/目录内等待 atd 服务的取用和执行。 还可以进入到/var/spool/at 目录里把计划任务删除计划任务的文件都保存在该目录里可以用 rm -f 文件名来删除(以文件的形式删除计划任务因为计划任务是以文件形式保存在该目录中) 例 4: #cd /var/spool/at //进入到/var/spool/at 目录中 ls //显示目录中所有文件 rm -f a0000b0138b19c //删除计划任务 在通常情况下超级用户都可以使用这个命令。对于其他用户来说能否可以使用就取决于两个文 件:/etc/at.allow 和/etc/at.deny。 at 命令是可以基于用户来控制的我们可以明确指定哪些用户可以使用 at 计划任务哪些用户不可以使用 at 计划任务。 at 的控制文件 /etc/at.allow /etc/at.deny 系统默认是有 at.deny 文件如果某个用户名在这个文件里他就不能使用 at 计划任务。如果有 at.allow 文件allow 文件先行检查了 allow 明确允许就不会检查 deny。 如果你要让哪个用户不能使用计划任务就直接把他的用户名写进去就可以了一排只能写一个。 2 、 cron 服务 ( 参考网址 http://www.linuxsir.org/main/?qnode/209) 相对与 atcron 的优点就是能够周期性的执行某个命令,at 却只能执行一次cron 的后台进程名字 是 crond ,cron 也是 system V 的服务所以我们可以 service crond start|stop 来启动和关闭此服 务,也可以使用 chkconfig 或者 ntsysv 来选择 cron 服务的默认开启这些命令在以前我们都讲过的 命令 #crontab -e 编辑当前用户的 cron 表 #crontab -l 查看当前用户的 cron 表 #crontab -r 删除当前用户的 cron 进程 #crontab -u 用户名 以某用户的身份来控制 cron 表 还有个重要的知识点就是当用户的计划任务建立后是存放在 var/spool/cron 这个目录 当使用 crontab -e 编辑当前用户的 cron 表后会出现一个 vi 文件cron 的格式是这样的。分成两 列左边是时间右边是运行的命令。时间是由 5 个部分组成。 例 * * * * * wall hello everyone 5 个星号分别代表minute hour day-of-month month-of-year day-of-week 而 wall hello everyone 这是命令内容。上面的意识是每分每小时每天每月每周广播 hello everyone。具体时间大家可以自己定义。如果要每两分钟发送就用*/2 代替第一个*。也可以是用具体时间来表示。 我们使用 crontab -e 编辑当前用户的 cron 表 这里的 5 个星号就代表的时间和日期 第一个*星号代表个小时的第几分钟minute 范围是从 0-59 第二个*星号代表每天的第几个小时hour 范围是从 0-23 第三个*星号代表每月的第几个日day-of-month 范围从 1-31 第四个*星号代表没年的第几个月month-of-year 范围从 1-12 第五个*星号代表每周的星期几day-of-week 范围从 0-6其中 0 表示星期日 用户名也就是执行程序要通过哪个用户来执行这个一般可以省略 命令执行的命令和参数。 时程表的格式如下 : f1 f2 f3 f4 f5 program 其中 f1 是表示分钟f2 表示小时f3 表示一个月份中的第几日f4 表示月份f5 表示一个星期 中的第几天。program 表 示要执行的程序。 当 f1 为 * 时表示每分钟都要执行 programf2 为 * 时表示每小时都要执行程序其余以此类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行f2 为 a-b 时表示从第 a 到第 b小时都要执行其余以此类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次f2 为 */n 表示每 n 小时个时间间隔执行一次其余以此类推 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行f2 为 a, b, c,... 时表示第 a, b, c... 个小时要执行其余以此类推 使用者也可以将所有的设定先存放在档案 file 中用 crontab file 的方式来设定时程表。 例 1如果我要表示 9 月 10 日 25 分执行 ls var/spool/cron 任务怎么表示 25 * 10 9 * ls var/spool/cron 由于我没表示小时所以就只能里面为每小时 例 2我要在每周日每分钟执行 wall Hello redking.blog.51cto.com 这个命令时间怎么表示 */1 * * * 0 wall Hello redking.blog.51cto.com */ 表示每多少分钟执行一次 例 3每晚的 21:30 重启 apache。 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 例 4每月 1、10、22 日的 4 : 45 重启 apache 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 例 5每周六、周日的 1 : 10 重启 apache 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 例 6在每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 例 7每一小时重启 apache * */1 * * * /usr/local/etc/rc.d/lighttpd restart 例 8晚上 11 点到早上 7 点之间每隔一小时重启 apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 例 9每月的 4 号与每周一到周三的 11 点重启 apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 例 10一月一号的 4 点重启 apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 例 11在 12 月内, 每天的早上 6 点到 12 点中每隔 3 个小时执行一次 /usr/bin/backup 0 6-12/3 * 12 * /usr/bin/backup 例 12每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo haha 20 0-23/2 * * * echo haha 3 、系统级别的计划任务及其扩展 anacrontab 这个是系统设置好了清理系统垃圾或者是自动执行某些脚本的系统任务一般我们做了解就行了 不要更改配置文件是/etc/conrtab SHELL就是运行计划任务的解释器默认是 bash PATH执行命令的环境变量 MAILTO计划任务的出发者用户 HOME家目录为/ run-parts 是一个脚本在/usr/bin/run-parts作用是执行一个目录下的所有脚本/程序。 run-parts /etc/cron.hourly 执行目录/etc/cron.hourly/之下的所有脚本/程序. run-parts 下面就是运行的命令 vim /etc/crontab 与 crontab -e 写入的定时运行的区别? vim /etc/crontab是系统级别定义的 crontab/etc/crontab 的所有者和组都是 root crontab -e 是用户自定义的 crontab是所有的用户都可以写入的 两种方法记录的位置不一样一个在/etc/ 另一个在/var/ 里面。都被 cron 服务调用 如果系统在以上说的时间没有开机怎么办那么这个脚本不就是不能执行了设计者早就想到了这个问题所以就有了 cron 服务的扩展,目的就是为了防止非 24 小时开机的计算机遗漏的守护任务,anacr ontab 就是系统计划任务的扩展文件在一个指定时间间隔错过后自动执行任务 格式是这样的 period delay job-identifier command period — 命令执行的频率天数 delay — 延迟时间分钟 job-identifier — 任务的描述用在 anacron 的消息中并作为作业时间戳文件的名称只能包括 非空白的字符除斜线外。 command — 要执行的命令 第一行的意思是每天开机 65 分钟后就检查 cron.daily 文件是否被执行了如果今天没有被执行就执行他 第二行的意思是每隔 7 天开机后 70 分钟检查 cron.weekly 文件是否被执行了,如果一周内没有被执行就执行他 第三行的意思也差不多 下面说说关于 cron 服务的控制和 at 差不多就是/etc/cron.deny 这个配置文件来控制里面写入要禁止使用 cron 用户的名字一行一个就 OK 了