2011-01-13 70 views
0

我使用SharpSsh從ASP.NET/C#運行腳本。我意識到當腳本運行時,我從unix執行ps -ef grep,我看到相同的腳本運行兩次,一次使用csh -c,另一次使用ksh。腳本有shebang ksh,所以我不知道爲什麼csh的副本也在運行。另外,如果我直接從unix運行相同的腳本,只有一個副本運行ksh。在腳本中沒有其他shell正在運行。SharpSsh - 腳本在csh和ksh中運行兩次

+1

SharpSsh是否有可能以csh作爲默認shell的用戶登錄,然後它運行您的腳本與shebang做正確的事情? ksh腳本不能被csh解釋,因爲語法太不同了。另外,您可以在腳本中添加一些調試輸出,例如,使用`$$`輸出附加到或觸摸文件的PID。 (順便說一下,我對SharpSsh並不熟悉。) – 2011-01-13 04:27:02

回答

1

大多數Unix/Linux現在都有一個命令或選項,它們會顯示進程樹,並帶有縮進列表,例如,查找-t或-T選項到ps或ptree OR

USER  PID PPID START TT  TIME CMD 
    daemon  1  1 11-03-06 ?   0 init 
    myusr 221568  1 11-03-07 tty10 1.00s \_ -ksh 
    myusr 350976 221568 07:52:11 tty10  0 | \_ ps -efT 

我敢打賭,你會看到,CSH是包括你的腳本作爲參數,用戶登錄shell(您可能需要使用不同的選項來PS看到CSH進程的完整的命令行)並且作爲一個子過程,您將看到ksh執行您的腳本,並在ksh之下爲子腳本正在調用的任何外部命令執行進一步的子過程。

我希望這會有所幫助。

P.S.因爲你似乎是一個新用戶,如果你得到一個可以幫助你的答案,請記住將它標記爲已接受,或者給它一個+(或 - )作爲有用的答案。