ASP.NET から Tomcat サーバーのステータスを制御したいと考えています。したがって、基本的には次のコマンドを実行します。
sudo /etc/rc.d/init.d/tomcat5_3 status
sudo /etc/rc.d/init.d/tomcat5_3 stop
sudo /etc/rc.d/init.d/tomcat5_3 start
Session.ExecuteCommand
以下のように、WinSCP .NET アセンブリからのメソッドの単純な呼び出しを使用します。
public string ExecScript(string cmd)
{
try
{
CommandExecutionResult result = sessDB.ExecuteCommand(cmd);
result.Check();
return result.Output;
}
catch (Exception e)
{
Console.WriteLine("An error occurred: '{0}'", e);
}
return "";
}
ExecScript
次の 3 つのコマンドのいずれかで呼び出します。
string result = ExecScript("sudo /etc/rc.d/init.d/tomcat5_3 status");
status コマンドは問題なく動作します。常に文字列を返すので、それを解析して Tomcat の正しいステータスを取得できます。
しかし、停止/開始しようとすると、結果は次のようになります。
最初のメッセージ
Stopping tomcat:
数秒後のメッセージの 2 番目の部分
Stopping tomcat: [OK]
そして問題が発生します。もちろん、プログラムはこれらのメッセージを表示せず、ハングするだけで、出力ウィンドウはコード259を返します。これは、私が知っているように、「コマンドがまだ進行中です」を意味します。
実際、停止/開始操作は正常に終了します。しかし、私のアプリはそれについて私に通知しません。エラーなし、例外なし、ハング...
ヒント、アドバイスはありますか?