next up previous
Next: 要怎樣才能截斷一個檔案? Up: 中級的問題 Previous: 我要如何得知一個檔案建立的時間?

在執行 rsh 的時候要怎樣才能不必等遠方指令執行結束就回到 shell? (關於我們所討論的 rsh,請參閱問題 2.7)

以下這些憑直覺想到的答案都達不到這個效果:

		rsh machine command &
		rsh machine 'command &'
例如, 執行 rsh machine 'sleep 60 &' 這個命令時,我們可以觀察到:rsh 並 不會立刻結束,而是等到遠方的 sleep 命令完成以後才結束,即使我們在遠 方使用背景方式執行此命令。所以要怎樣才能讓 rsh 在 sleep 命令啟動後立 刻結束呢?

答案如下-

如果您在遠端使用csh:

		rsh machine -n 'command >&/dev/null </dev/null &'

如果您在遠端使用 sh:

		rsh machine -n 'command >/dev/null 2>&1 </dev/null &'

為什麼呢?因為 "-n" 會把 rsh 的 stdin 接到 /dev/null,因此您可以在本地 機器以背景方式執行整個 rsh 命令。不管是使用 -n 選項或者在指令結尾使 用 "/dev/null",其效果都是一樣的。此外,在遠端機器使用的輸出入轉向(寫 在單引號內的部份)會讓 rsh 認定此次連線可逕行結束(因為已無其他輸 入資料)。

附註: 任何檔案都可以用於遠端機器的輸出入轉向,而不僅限於 /dev/null。

在許多狀況下,這個複雜的命令當中有很多部份都是非必要的。



Tan Koan-Sin
1999-03-02