一、linux下的任務排程
linux下的任務排程分為兩類:系統任務排程和使用者任務排程。
系統任務排程:系統週期性索要執行的工作,比如寫快取資料到硬碟、日誌清理等。在/etc目錄下有crontab檔案,這個就是系統任務排程的配置檔案,只有系統管理員可以修改。
前四行是用來配置crond任務于寧的環境變數,第一行shell變數制定了系統要使用哪個shell,這是bash。
第二行path變數制定了系統執行命令的路徑,第三行mailto變數制定了crond的任務執行細膩將通過電子郵件傳送給root使用者,如果mailto變數為空,則表示不傳送任務任務執行資訊給使用者,第四行的home變數制定了在執行命令或指令碼時使用的主目錄。
使用者任務排程:使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。使用者可以使用crontab工具來定製自己的計畫任務,所有使用者定義的crontab檔案都被儲存在
/var/spool/cron目錄中。
二、crontab檔案
crontab檔案包含送交crond
守護程序
的一系列作業和指令。
crontab檔案的含義:使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個字段代表一項設定,它的格式共分為六個段,前五段是時間設定段,第六段是要執行的命令段,格式如下:
minute:表示分鐘,0~59
hour: 表示小時,0~23
day: 表示日期,1~31
month:表示月份,1~12
week:表示星期,0~7,0和7代表星期日
command:要執行的命令,可以是系統命令,也可以使自己編寫的指令碼檔案
以上各個字段,可以使用以下特殊字段:
星號(*):代表所有的值
逗號(,):可以用逗號隔開的值指定乙個列表範圍,例如:「1,2,3,4,5」
中槓(-):可以用證書之間的中槓表示乙個整數範圍,例如:「2-6」,表示「2,3,4,5,6」
正斜線(/):可以用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩個小時執行一次,可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。
三、crond程序
crond常常在後台作為守護程序執行,每一分鐘檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。
檢視crontab服務狀態
service crond status
手動啟動crond服務:
service crond start
檢視crond服務是否已設定為開啟啟動,執行命令:
ntsysv
加入開機自動啟動:
chkconfig -level 35 crond on
四、cron.deny\ cron.allow檔案
系統管理員可以通過cron.deny 和 cron.allow 這兩個檔案來禁止或允許使用者擁有自己的crontab檔案。
/etc/cron.deny 表示不能使用crontab 命令的使用者
/etc/cron.allow 表示能使用crontab的使用者。
預設情況下,cron.allow檔案不存在。如果兩個檔案同時存在,那麼/etc/cron.allow 優先。如果兩個檔案都不存在,那麼只有超級使用者可以安排作業。
五、crontab語法
1:檢視當前使用者的定時任務
[oracle@localhost ~]$ crontab -l
* * * * * /home/oracle/test.sh >/dev/null 2>&1
2:編輯當前使用者的定時任務
可以在編輯狀態修改、刪除、新增一些定時任務。注釋一般用#
[oracle@localhost ~]$ crontab -e
3:刪除當前使用者的定時任務
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
注意事項:
配置定時任務時,需要注意兩個問題:
1: 在shell中設定了必要的環境變數;例如乙個shell指令碼手工執行ok,但是配置成後台作業執行時,獲取不到oracle的環境變數,這是因為crontab環境變數問題,crontab的環境預設情況下並不包含系統中當前使用者的環境。所以,你需要在shell指令碼中新增必要的環境變數的設定
2: 盡量所有的檔案都採用完全路徑方式,避免使用相對路徑。
crontab定時執行命令
crontab 是系統守護程序 crontab file u user 用指定的檔案替代目前的crontab。crontab u user 用標準輸入替代目前的crontab.crontab l user 列出使用者目前的crontab.crontab e user 編輯使用者目前的crontab....
Linux使用crontab定時執行命令
crontab是linux下定時執行工具。例如有以下需求 要在每個月的1號備份 home temp 下的內容,生成以當時時間為名字的tar檔案,並放在 home bak 下。1.先建立shell指令碼,例如在 home temp 下建立bak.sh指令碼,並輸入 bin bash time date...
linux使用crontab定時執行命令過程
最近在寫了乙個資料採集的指令碼,想每天在伺服器上定時自動執行,但是由於是第一次接觸,遇到了問題,最終順利解決,現在總結方法如下 1.首先還是先將你需要執行的命令指令碼寫好或者上傳上去,我的s 件如下所示 usr bin bash echo 開始 home supervision log.txt us...