2011-01-13 72 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.因为你似乎是一个新用户,如果你得到一个可以帮助你的答案,请记住将它标记为已接受,或者给它一个+(或 - )作为有用的答案。