日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

25 FreeBSD連載:定時(shí)執(zhí)行程序

定時(shí)執(zhí)行程序Unix系統(tǒng)提供了cron和at命令,使系統(tǒng)和用戶可以定時(shí)運(yùn)行一定的程序,而不需手工啟動(dòng) 。
使用cron用于周期性的執(zhí)行一個(gè)命令,為了使用它,必須編輯crontab文件 。系統(tǒng)缺省的/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
02***root/etc/daily 2>&1 | sendmail root
303**6root/etc/weekly 2>&1 | sendmail root
3051**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在這個(gè)crontab文件中首先設(shè)置了幾個(gè)環(huán)境變量,cron執(zhí)行這個(gè)文件時(shí)先設(shè)置這些環(huán)境變量,然后按照每列規(guī)定的時(shí)間來執(zhí)行相應(yīng)的命令 。第一列為分鐘,規(guī)定每小時(shí)的第幾分執(zhí)行相應(yīng)的程序,第二列為每天第幾小時(shí)執(zhí)行程序,,第三列為每月的第幾天,第四列為第幾周,第五列為每周的第幾天,第六列為執(zhí)行該文件的用戶身份,第七列為要執(zhí)行的命令 。
普通用戶也可以使用crontab命令來創(chuàng)建和維護(hù)自己的crontab文件 。由于是用戶不能更改執(zhí)行程序的標(biāo)識(shí)的,因此用戶的crontab就不需第六列──執(zhí)行程序的用戶身份,而只要直接跟隨要執(zhí)行的命令 。使用 “crontab -e” 命令,使用編輯器按照相應(yīng)的格式編輯自己的crontab文件,或者使用 “crontab -l” 列出現(xiàn)有crontab文件的內(nèi)容,當(dāng)然只有root用戶才能查看其他用戶的crontab文件:
$ crontab -l
12 0 * * * /home/wb/bin/getfiles所有用戶的crontab設(shè)置文件都放在/var/cron/tabs目錄下,文件名與每個(gè)用戶的用戶名相同 。cron中的命令執(zhí)行結(jié)果將被系統(tǒng)使用mail寄給每個(gè)用戶 。在/var/cron目錄下還有crontab執(zhí)行的記錄文件,系統(tǒng)管理員可以按照這個(gè)文件來檢查系統(tǒng)安全性,檢查是否有影響系統(tǒng)安全的程序被執(zhí)行 。
與cron不同,at命令用于在一定的時(shí)間后或在一定的時(shí)刻執(zhí)行設(shè)置好的命令 。at命令使用一個(gè)時(shí)間參數(shù)表示何時(shí)執(zhí)行命令,然后就從標(biāo)準(zhǔn)輸入中讀入要執(zhí)行的命令,此時(shí)就如同在shell下操作一樣輸入要執(zhí)行的命令,最后使用^D退出輸入命令的模式 。用戶不必?fù)?dān)心真正執(zhí)行命令時(shí)是否能夠找到正確的程序,at會(huì)將當(dāng)前shell的設(shè)置,包括環(huán)境變量,保留起來,以便在執(zhí)行命令時(shí)創(chuàng)造一個(gè)與啟動(dòng)at時(shí)完全相同的執(zhí)行環(huán)境 。
$ at 1:00am2days
wget ftp://ftp.cdrom.com/pub/FreeBSD/packages/All/netscape.tgz
^D上面命令將在兩天后的凌晨1:00時(shí)啟動(dòng)進(jìn)程下載文件,當(dāng)然at命令并不是十分精確,其執(zhí)行時(shí)間只是表示大概時(shí)間,可能與標(biāo)準(zhǔn)時(shí)間存在一兩分鐘的差異 。at也支持各種復(fù)雜的時(shí)間表示方法,可以使用hhmm,hh:mm,或者加上am或pm結(jié)尾的12小時(shí)制方式 。還可以使用年月日,規(guī)定程序運(yùn)行的日期:
$ at 1:00am Mar 5
echo Hello | mail root
^D
Job 5 will be executed using /bin/sh
$ atq
DateOwnerQueueJob#
01時(shí)00分00秒 00/03/05rootc5
$ atrm 5用戶的at程序執(zhí)行結(jié)果也被系統(tǒng)郵寄給該用戶,用戶可以使用mail來查看程序的輸出結(jié)果或執(zhí)行錯(cuò)誤 。當(dāng)用戶啟動(dòng)at命令之后,可以使用atq命令來查看自己還沒有執(zhí)行的at命令,如果atq是由root執(zhí)行,則將列出系統(tǒng)中所有沒有執(zhí)行的at命令 。然后可以使用atrm命令根據(jù)atq輸出Job號(hào)來刪除at作業(yè) 。
系統(tǒng)使用/var/at/at.allow和/var/at/at.deny文件來配置可以使用at命令的用戶,和不可以使用at命令的用戶 。其中at.allow的優(yōu)先權(quán)更高,如果存在at.allow,就只允許這個(gè)文件中列出的用戶使用at,而不考慮任何不在這個(gè)文件中列出的用戶 。因此可以使用一個(gè)空at.allow文件禁止所有用戶使用at 。當(dāng)不存在at.allow文件的時(shí)候,那么凡不在at.deny文件中列出的用戶都可以使用at 。

推薦閱讀