FreeBSD定時執行程式(cron)(轉)
Unix系統提供了cron和at命令,使系統和使用者可以定時執行一定的程式,而不需手工啟動。
使用cron用於週期性的執行一個命令,為了使用它,必須編輯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/shPATH=/etc:/bin:/sbin:/usr/bin:/usr/sbinHOME=/var/log##minute hour mday month wday who command#*/5 * * * * root /usr/libexec/atrun## rotate log files every hour, if necessary0 * * * * root /usr/sbin/newsyslog## do daily/weekly/monthly maintenance0 2 * * * root /etc/daily 2>&1 | sendmail root30 3 * * 6 root /etc/weekly 2>&1 | sendmail root30 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檔案中首先設定了幾個環境變數,cron執行這個檔案時先設定這些環境變數,然後按照每列規定的時間來執行相應的命令。第一列為分鐘,規定每小時的第幾分執行相應的程式,第二列為每天第幾小時執行程式,,第三列為每月的第幾天,第四列為第幾周,第五列為每週的第幾天,第六列為執行該檔案的使用者身份,第七列為要執行的命令。
普通使用者也可以使用crontab命令來建立和維護自己的crontab檔案。由於是使用者不能更改執行程式的標識的,因此使用者的crontab就不需第六列──執行程式的使用者身份,而只要直接跟隨要執行的命令。使用 “crontab -e” 命令,使用編輯器按照相應的格式編輯自己的crontab檔案,或者使用 “crontab -l ” 列出現有crontab檔案的內容,當然只有root使用者才能檢視其他使用者的crontab檔案:
$ crontab -l12 0 * * * /home/wb/bin/getfiles
所有使用者的crontab設定檔案都放在/var/cron/tabs目錄下,檔名與每個使用者的使用者名稱相同。cron中的命令執行結果將被系統使用mail寄給每個使用者。在/var/cron目錄下還有crontab執行的記錄檔案,系統管理員可以按照這個檔案來檢查系統安全性,檢查是否有影響系統安全的程式被執行。
與cron不同,at命令用於在一定的時間後或在一定的時刻執行設定好的命令。at命令使用一個時間參數列示何時執行命令,然後就從標準輸入中讀入要執行的命令,此時就如同在shell下操作一樣輸入要執行的命令,最後使用^D 退出輸入命令的模式。使用者不必擔心真正執行命令時是否能夠找到正確的程式,at會將當前shell的設定,包括環境變數,保留起來,以便在執行命令時創造一個與啟動at時完全相同的執行環境。
$ at 1:00am +2dayswget 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 5echo Hello | mail root^DJob 5 will be executed using /bin/sh$ atqDate 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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-944757/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL cron定時執行SQL語句MySql
- 定時 MYSQL 動作-LINUX下用CRON實現定時執行指令碼(轉)MySqlLinux指令碼
- ubuntu上使用cron執行定時任務計劃Ubuntu
- 嗯,真香!使用 www-data 使用者執行定時任務(cron)
- FreeBSD可執行程式格式(轉)行程
- Golang——Cron 定時任務Golang
- **java設定一段程式碼執行超時時間(轉)**Java
- Linux定時任務系統 Cron 入門(轉)Linux
- openshift 新增cron定時任務
- FreeBSD下的可執行程式格式(轉)行程
- FreeBSD shell設定(轉)
- 使用 Rust 執行 Cron 作業Rust
- linux定時任務cron配置Linux
- MySQL定時執行MySql
- FreeBSD程式管理(轉)
- Laravel Cron 定時任務 “跳坑” 點Laravel
- 【crontab】使用cron每天定時簽到掘金
- 排查linux 定時任務cron crontabLinux
- GO的定時器Timer 和定時任務cronGo定時器
- Linux下用crontab定時執行PHP程式LinuxPHP
- 製作軟盤上執行的FreeBSD系統(轉)
- crontab命令簡介 linux定時設定 Cron實現自動任務 (轉)Linux
- UNIX下讓ORACLE定時執行*.sql檔案(轉)OracleSQL
- FreeBSD設定基本系統(轉)
- FreeBSD設定和使用DHCP(轉)
- FreeBSD下PPPoE的設定(轉)
- FreeBSD下PPPoE的設定 (轉)
- 編輯cron實現自動執行
- Linux/UNIX 定時任務 cron 詳解Linux
- PHP定時執行任務PHP
- 【親測有效】【定時】定時任務 @Scheduled(cron = "0 0 21 * * ?") 【Scheduled失效】
- 如何使用cron任務每隔2天在固定時間執行任務
- FreeBSD配置系統時間(轉)
- [轉]SQL Server 2000定時執行SQL語句SQLServer
- java 定時任務 quartz 時間表示式Cron總結Javaquartz
- FreeBSD調整系統設定(轉)
- FreeBSD其他核心設定選項(轉)
- FreeBSD設定和使用ipfw/natd(轉)