指令解釋:
cron 系統排程程序,可以使用它在每天的非高峰負荷時間段運作作業
at at指令,使用它在一個特定的時間運作一些特殊的作業
& 使用它在背景運作一個占用時間不長的程序
nohup 使用它在背景運作一個指令,即使在使用者退出時也不受影響
cron/crontab:
cron是系統主要的排程程序,可以在無需人工幹預的情況下運作作業
crontab的指令允許使用者送出、編輯和删除相應的作業。每一個使用者都有自己的crontab檔案,系統管理者可以通過cron.deny和cron.allow這兩個檔案來禁止和允許使用者擁有自己的crontab檔案
crontab檔案的格式: 分<>時<>日<>月<>星期<>要運作的指令
<>表示空格,日期可用-表示某個時間段, 用*表示任意條件,用“,”表示或條件
例:30 21 * * * /apps/test.sh 每晚21:30運作/apps/test.sh
45 4 1,10,22 * * /apps/test.sh 每月1、10、22日4:45運作/apps/test.sh
0,30 18-23 * * 6,0 /bin/find -name "core" -exec rm {} /;
每個星期六、日的18點到23點,每隔30分鐘運作一次find并删除
每個指令都需要給出絕對路徑,注意環境變量,cron不知道一些特殊的變量
crontab指令的格式:
crontab [-u user] -e -l -r
-u 使用者名 -e 編輯crontab檔案 -l 列出crontab檔案中的内容 -r 删除crontab檔案
建立一個新的crontab檔案:
在考慮向cron程序送出一個crontab檔案之前,首先要做的是設定環境變量EDITOR,因為99%的UNIX和LINUX使用者都使用vi,是以可以編輯$HOME目錄下的.profile或.bash_profile,加入一行:
EDITOR=vi; export EDITOR;
編輯檔案<user>cron,内容為0,15,30,45 18-06 * * * /bin/echo `date` > /dev/console
表示每隔15分鐘向控制台輸出一次目前時間,這樣系統崩潰的時候,可以通過檔案看出來
然後使用 crontab usercron送出給cron程序,同時副本存放在/var/spool/cron目錄中
at指令:
at指令會保留所有目前的環境變量,包括路徑,不像crontab,隻提供預設的環境
通過/etc目錄下的at.deny和at.allow檔案來控制哪些使用者可以使用at指令
指令格式: at [-f script] [-m -l -r] [time] [date]
-f script 是所要送出的腳本或指令
-l 列出目前所有等待運作的作業,atq指令具有相同的作用
-m 作業完成後給使用者發送郵件
-r 清除作業,清除時需要提供作業辨別(ID),有的系統使用atrm來清除
time at指令的時間格式非常靈活,可以是H、HH.HHMM、HH:MM或H:M,還可以使用a.m.或p.m.
date 日期格式可以是月份數或日期數,而且還能識别比如today,tomorrow這樣的詞
at指令的送出:
$at 21:10
at> find / -name "passwd" -print
at> <EOT> (這個<EOT>就是ctrl+D,表示退出)
warning: commands will be executed using /bin/sh
job 1 at 2005-01-01 21:10
送出的作業被配置設定了一個唯一的辨別 job 1
at時間還可以是:at 6.45am May 12、at 11.10pm、at now + 1 hour、
at 9am tomorrow、at 15:00 May 24、at now + 10 minutes
如果是送出一個腳本,如: at 3.00pm tomorrow -f /apps/test.sh
還可以通過管道符,如:echo find /etc -name "passwd" -print |at now + 1 minutes
列出所有的at作業: at -l 并且可以在/var/spool/at/下找到這些作業檔案
清除作業: atrm [job bo] 或 at -r [job no],如 at -r job 3
&指令:
使用這個指令可以解放出終端接着做别的事情,但是需要使用者互動的程式就不能放在背景
格式: 程式/指令 & 注意标準輸出一樣會顯示在螢幕上,可以使用重定向方法解決
nohup指令:
格式: nohup command & 這樣在這個使用者退出之後,程序一樣會繼續運作,不會中斷
使用這個指令,預設該作業的輸出都會定向到一個名為nohup.out的檔案中