免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2714 | 回复: 0
打印 上一主题 下一主题

freebsd定时执行(笔记) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-31 10:08 |只看该作者 |倒序浏览
FreeBSD定时执行程序(cron)
Unix系统提供了cron和at命令,使系统和用户可以定时运行一定的程序.FreeBSD中定时执行任务分两种情况:一种是一次性执行的任务,另一种是周期性定时执行的任务。前面一种将用到指令at,
而后一种会用到指令crontab。
使用cron用于周期性的执行一个命令,必须编辑/etc/crontab 文件为:
# /etc/crontab - root's crontab for FreeBSD
#
# $Id: crontab,v 1.13 1996/01/06 22:21:37 ache Exp $
# From: Id: crontab,v 1.6 1993/05/31 02:03:57 cgd Exp
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute  hour  mday  month  wday  who  command
#
*/5   *    *    *    *    root  /usr/libexec/atrun
#
# rotate log files every hour, if necessary
0  *  *  *  *  root  /usr/sbin/newsyslog
#
# do daily/weekly/monthly maintenance
0    2    *    *    *    root  /etc/daily 2>&1 | sendmail root
30   3    *    *    6    root  /etc/weekly 2>&1 | sendmail root
30   5    1    *    *    root  /etc/monthly 2>&1 | sendmail root
#
# time zone change adjustment for wall cmos clock,
# does nothing, if you have UTC cmos clock.
# See adjkerntz(8) for details.
1,31  0-4  *  *  *  root  /sbin/adjkerntz  -a
第一列为分钟,规定每小时的第几分执行相应的程序;
第二列为每天第几小时执行程序;
第三列为每月的第几天;
第四列为第几周;
第五列为每周的第几天;
第六列为执行该文件的用户身份;
第七列为要执行的命令。

使用 “crontab -e” 命令,使用编辑器按照相应的格式编辑自己的crontab文件,或者使用 “crontab -l ” 列出现有crontab文件的内容.

 与cron不同,at命令用于在一定的时间后或在一定的时刻执行设置好的命令。at命令使用一个时间参数表示何时执行命令,然后就从标准输入中读入要执行的命令,此时就如同在shell下操作一样输入要执行的命令,最后使用^D 退出输入命令的模式。

「at」设定只执行一次的程序
「at」的设定可以分为三个指令:「at」用来建立工作、「atq」用来列出目前待执行的工作有哪些、「atrm」用来删除 atq 中所列出的工作。当您执行了 at 后,它会要求您在命令列中以 shell
scripts 的写法输入想要执行的指令,而您也可以先将所要执行的指令写再一个档案中,再让 at 去执行。
在使用 at 指令时,必须先输入您要在什么时候执行工作,而时间的格式可以是下列任何一种:
at 10pm                   设定晚上十点执行。时间的格式可以是 HHMM 或 HH:MM。
at 8:30am Oct 10          设定十月十日早上八点半执行。
at midnight Jan 1 2005    设定 2005 年一月一日的第一秒钟执行。
at teatime                设定在下次的下午 4 点执行。teatime 表示是 4:00pm,而 midnight 表示半夜十二点,noon 表示中午十二点。
at -t MMDDhhmm            表示在 MM 月 DD 日 hh 时 mm 分时执行,您还可以在 MM 前加上年,而年的格式二位或是四位都可以。
$ at 1:00am +2days
wget
ftp://ftp.cdrom.com/pub/FreeBSD/packages/All/netscape.tgz
^D
  上面命令将在两天后的凌晨1:00时启动进程下载文件,当然at命令并不是十分精确,其执行时间只是表示大概时间,可能与标准时间存在一两分钟的差异。at也支持各种复杂的时间表示方法,
可以使用hhmm,hh:mm,或者加上am或pm结尾的12小时制方式。还可以使用年月日,规定程序运行的日期:
$ at 1:00am Mar 5
echo Hello | mail root
^D
Job 5 will be executed using /bin/sh
$ atq
Date          Owner  Queue  Job#
01时00分00秒 00/03/05  root  c    5
$ atrm 5
  用户的at程序执行结果也被系统邮寄给该用户,用户可以使用mail来查看程序的输出结果或执行错误。当用户启动at命令之后,可以使用atq命令来查看自己还没有执行的at命令,如果atq是由
root执行,则将列出系统中所有没有执行的at命令。然后可以使用atrm命令根据atq输出Job号来删除at作业。
  系统使用/var/at/at.allow和/var/at/at.deny文件来配置可以使用at命令的用户,和不可以使用at命令的用户。其中at.allow的优先权更高,如果存在at.allow,就只允许这个文件中列出的
用户使用at,而不考虑任何不在这个文件中列出的用户。因此可以使用一个空at.allow文件禁止所有用户使用at。当不存在at.allow文件的时候,那么凡不在at.deny文件中列出的用户都可以使用
at。


实例:extmail邮件服务器利用/tmp目录放置用户登入系统产生的临时文件,用户多了后,这些文件产生巨多个,最后导致不能在生产了,我原先使用的版本没有自动清除功能,我只好手动删除。我则利用一个简单的shell程序zxdel.sh,我暂且放在/tmp目录下,将属性改为可执行。

编辑/etc/crontab文件,增加了zxdel.sh的路径,在最后一行增加了定时执行(每天1:30执行):

/etc/crontab文件如下:
# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/tmp
HOME=/var/log
#
#minute hour    mday    month   wday    who     command
#
*/5     *       *       *       *       root    /usr/libexec/atrun
#
# Save some entropy so that /dev/random can re-seed on boot.
*/11    *       *       *       *       operator /usr/libexec/save-entropy
#
# Rotate log files every hour, if necessary.
0       *       *       *       *       root    newsyslog
#
# Perform daily/weekly/monthly maintenance.
1       3       *       *       *       root    periodic daily
15      4       *       *       6       root    periodic weekly
30      5       1       *       *       root    periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time.  See adjkerntz(8) for details.
1,31    0-5     *       *       *       root    adjkerntz -a
30      1       *       *       *       root    zxdel.sh

zxdel.sh文件如下:
#!/bin/sh
rm -rf /tmp/sid_0*;
rm -rf /tmp/sid_1*;
rm -rf /tmp/sid_2*;
rm -rf /tmp/sid_3*;
rm -rf /tmp/sid_4*;
rm -rf /tmp/sid_5*;
rm -rf /tmp/sid_6*;
rm -rf /tmp/sid_7*;
rm -rf /tmp/sid_8*;
rm -rf /tmp/sid_9*;
rm -rf /tmp/sid_a*;
rm -rf /tmp/sid_b*;
rm -rf /tmp/sid_c*;
rm -rf /tmp/sid_d*;
rm -rf /tmp/sid_e*;
rm -rf /tmp/sid_f*;
rm -rf /tmp/sid_g*;
rm -rf /tmp/sid_h*;
rm -rf /tmp/sid_i*;
rm -rf /tmp/sid_j*;
rm -rf /tmp/sid_k*;
rm -rf /tmp/sid_l*;
rm -rf /tmp/sid_m*;
rm -rf /tmp/sid_n*;
rm -rf /tmp/sid_o*;
rm -rf /tmp/sid_p*;
rm -rf /tmp/sid_q*;
rm -rf /tmp/sid_r*;
rm -rf /tmp/sid_s*;
rm -rf /tmp/sid_t*;
rm -rf /tmp/sid_u*;
rm -rf /tmp/sid_v*;
rm -rf /tmp/sid_w*;
rm -rf /tmp/sid_x*;
rm -rf /tmp/sid_y*;
rm -rf /tmp/sid_z*;

通过监测,执行情况正常。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/78845/showart_2041818.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP