天天看點

Linux中背景指令的執行

Linux中對于一些大任務需要在背景運作,否則會一直占用螢幕,防礙使用者使用終端去完成其它的任務。其中會提供如下幾個指令來進行背景執行:

1、  設定crontab檔案,并用它來送出作業;其中cron 系統排程程序,可以使用它在每天的非高峰負荷時間段運作作業,或在一周或一月中的不同時段運作。

2、  使用at指令來送出作業;使用它在一個特定時間運作一些特殊的作業,或在晚些的非負荷高峰時段或高峰時段運作。

3、  & 在背景送出作業;使用它在背景運作一個占用時間不長的程序。

4、  使用nohup指令送出作業。使用它可以在背景運作一個指令,即使在使用者退出時也不受影響。

Crontab的域

第1列   分鐘 1~59

第2列   小時 0~23(0表示子夜)

第3列   天 1~31

第4列   月1~12

第5列   星期 0~6 (0表示星期天)

第6列   要運作的指令

如下格式:分 時 日 月 星期 要運作的指令。它是從左邊讀起。用“-”來表示一個時間範圍,如在第5列中1-5表示周一到周五。采用“,”表示希望的某些值,如第5列中的1,4表示星期一和星期四。采用“*”表示連續的時間段。

如:45 4 1,10,22 * * /apps/bin/backup.sh表示每月的1、10、22日的4:45去執行/apps/bin/backup.sh腳本。

0, 30 18-23 * * * /apps/bin/dbcheck.sh表示每天的18:00-23:00之間每30分鐘運作/apps/bin/dbcheck.sh腳本。

Crontab指令的一般形式:

Crontab [-u user] -e  –l  –r

-u  表示使用者名

-e  編輯crontab檔案

-l  列出crontab檔案中的内容

-r  删除crontab檔案。

At指令

At指令允許使用者向cron守護程序送出作業,使其在稍後的時間運作。這個稍後可能是指幾分鐘或幾天以後,若希望在一個月或更長時間運作,則建議采用crontab指令。

At指令的基本形式為:

at [-f  script] [-m  -l  -r] [time] [date]

-f  script 表示所要送出的腳本或指令

-l  列出目前所有等待運作的作業,與atq指令等價

-r  清除作業, 與atrm的指令等價

-m 作業完成後給使用者發郵件

Time at指令的時間格式,非常靈活,可以是H、HH.mm等其中H為小時,M為分鐘。也可以采用a.m.和p.m.

Date 日期格式可以是月份數或日期數,而且at指令可以識别如today、tomorrow等這樣的詞。

$at 3.00 pm tomorrow –f /apps/bin/db_table.sh

表示明天下午3:00去執行/apps/bin/db_table.sh腳本

$at –l

檢視已經送出的所有的背景作業

$ at –r job 3 或 atrm job 3

會清除job 3作業

&指令

可以采用該&指令将要運作的作業推送到背景執行,其指令的形式為:command &。

$ comm.and > out.file  2 > &1 &

将該指令執行後的結果重定向到out.file中,并将該指令産生的錯誤定向到标準輸出,同時将該指令推送至背景運作。

nohup指令

該指令可以在你退出帳戶之後繼續運作相應的程序,它的意思是(no hang up)。

指令形式:nohup comm.and &..

若使nohup指令送出作業時,在缺少情況下該作業的所有輸出都被重定向到一個名為nohup.out的檔案中,除非指定了輸出檔案。

$ nohup  comm.and > myout.file 2 > &1

該指令會在執行完後将結果重定向至myout.file中,同時将标準錯誤輸出至标準輸出。

$ nohup  comm.and 2 > &1

該指令會在執行完後将結果重定向至nohup.out中,同時将标準錯誤輸出至标準輸出。

采用nohup還可以将幾個指令組織在一個shell腳本中一起送出并執行。

繼續閱讀