荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Gavin.bbs@bbs.tju.edu.cn (决定不再泡网……), 信区: Linux
标  题: 定时执行程序(FreeBSD使用大全)
发信站: 天大求实BBS站 (Fri Sep  5 16:12:05 2003)
转信站: SZU!news.tiaozhan.com!UTJ

http://freebsd.sinica.edu.tw/cnfug/project/ffs_tw/chapter3.4.4.html
有版权的东西:-)偶们承认版权:-)
3.4.4 定时执行程序


Unix系统提供了cron和at命令,使系统和用户可以定时运行一定的程序,而不需手工启动。


使用cron用于周期性的执行一个命令,为了使用它,必须编辑crontab文件。


用户也可以使用crontab命令来创建和维护自己的crontab文件。


$ crontab -l


12 0 * * * /home/user/bin/getfiles


cron按照每列规定的时间来执行相应的命令,第一列为分钟,规定每小时的第几分执行相应
的程序,第二列为每天第几小时执行程序,第三列为每月的第几天,第四列为第几周,第五
列为每周的第几天,最后为要执行的命令。


使用 “crontab -e” 命令,用户可以使用编辑器按照这个格式编辑自己的crontab文件,
或者使用 “crontab -l” 列出现有crontab文件的内容。当然只有root用户才能查看其他
用户的crontab文件:


所有用户的crontab设置文件都放在/var/cron/tabs目录下,文件名与每个用户的用户名相
同。cron中的命令执行结果将被系统使用mail寄给每个用户。在/var/cron目录下还有
crontab执行的记录文件,系统管理员可以按照这个文件来检查系统安全性,检查是否有影
响系统安全的程序被执
行。


除了使用crontab编辑各个用户定时执行程序之外,系统文件/etc/crontab中定义了系统级
的crontab文件,这个文件还包括命令应该以那个用户的身份来执行的设置。系统缺省的
/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文件的第六列为执行这一行指令的用户,而文件的最开始,还设置了一些环境
变量,用于设置程序的执行环境。


从系统的crontab来看,系统还提供了每天、每周、每月执行的程序,如果不要求十分精确
,可以利用这些脚本来完成一些工作。


与cron不同,at命令用于在一定的时间后或在一定的时刻执行设置好的命令。at命令使用一
个时间参数表示何时执行命令,然后就从标准输入中读入要执行的命令,此时就如同在
shell下操作一样输入要执行的命令,最后使用^D退出输入命令的模式。用户不必担心真正
执行命令时是否能够
找到正确的程序,at会将当前shell的设置,包括环境变量,保留起来,以便在执行命令时
创造一个与启动at时完全相同的执行环境。


$ at 1:00am +2days


fetch 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。
--------------------------
--新学期,好好学习...:-)
欢迎访问FreeBSD官方站点天津大学镜像http://freecs.eesky.org
欢迎使用cvs服务器freecs.eesky.org更新您FreeBSD系统的ports,src and doc:-)
新软件FTP:ftp://freecs.eesky.org 也随时欢迎您上传最新的软件与大家共享:-)
原211.81.54.130FTP服务重新开放,使用免费域名freecs.eesky.org

※ 来源:.天大求实BBS bbs.tju.edu.cn.[FROM: 202.113.13.188]
※ 修改:.Gavin 于 Sep  5 16:12:05 修改本文.[FROM: 211.81.54.130]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店