farmer-logo.gif (14959 bytes) cshell-logo.gif (19625 bytes)
ch-3.gif (10141 bytes)
main-b.gif (271 bytes)
 

 

3-7-4 關於背景工作使用的注意事項

資源使用限制(limit指令)

如果在你的使用環境中,有運用 C Shell 的內建指令 limit 來限制你的系統資源的使用時,對一項執行時間會較長的背景工作而言可能會比較不利。如果你想查詢資源使用限制可使用 C Shell 內建指令 limit,如下:

% limit
cputime 10:00
filesize unlimited
datasize 524280 kbytes
stacksize 8192 kbytes
coredumpsize unlimited
memoryuse unlimited
descriptors 64

這時你可清楚地看到各項系統資源的使用限制。如果你要取消某項限制,可用指令unlimit。譬如取消 CPU 的限制,方法如下:

% unlimit cputime

但如此運用會影響所有的 process,如果你只是要對放到背景中執行的工作單獨取消的話,你可用我們前面所提到的群體指令來執行該工作。如下例所示:

% ( unlimit cputime ; find / -nouser -ls >& nouser.file) &

工作控制與退出的關係(指令nohup)

在正常情況下, C Shell 在系統中所執行的處理程序(process)會隨著 logout 而終止,這是因為 UNIX 系統會隨著 logout 送出 hangup 的訊號將你所有的 process 終止。但在背景工作則會隨著你使用的 UNIX 系統不同而有所差異。有些 UNIX 系統對於執行背景工作會主動以 nohup 的方式執行,它可讓背景工作不受 logout 的影響而終止執行。但如果你的系統是屬於不主動為你的背景工作加上nohup 的話,則你一但 logout 則背景工作一樣逃不過被 hangup 訊號終止的命運。當然你也不可能得到任何的結果了。這一點請特別特別注意,務必在下指令到背景內執行前搞清楚系統的特性。如果發現有必要自己手動的話,下指令的方式如下:

% nohup command &


mail.gif (2925 bytes)

b-line.gif (2092 bytes)