1

Jenkins ジョブを使用して、いくつかの単純なシェル コマンドを実行しています (Jenkins SSH プラグイン経由で ssh 経由)。コマンドは、実行中の Tomcat サーバーをシャットダウンすることになっています。

sudo /opt/tomcat/bin/catalina.sh stop
ps xu | awk '/[t]omcat/{print $2}' | xargs -r kill -9

ジョブは正常に実行され、Tomcat は終了しますが、残念ながら失敗します。完全な出力は次のとおりです。

[SSH] executing pre build script:

sudo /opt/tomcat/bin/catalina.sh stop
ps xu | awk '/[t]omcat/{print $2}' | xargs kill -9
[SSH] exit-status: -1
Finished: FAILURE

コマンドの終了コードが -1 の場合、なぜ何か考えがありますか? いくつかのバリエーションを試してみましたが、うまくいきませんでした。

ありがとう。

4

4 に答える 4

1

Jenkinsはno process killed、killコマンドが出力しないことを気に入らないのではないかと思います。stdoutを/dev/nullにリダイレクトしてみてください。

于 2013-01-05T19:45:00.597 に答える
1

の出力を調べる必要がありps xuます。はプロセスを順次強制終了するため、によって生成されたプロセスkillが複数ある場合、最初のプロセスが終了した後に他のプロセスが自動的に終了する場合があります。次に、存在しなくなったプロセスを終了しようとします。tomcatps xukill

于 2013-01-05T01:33:17.903 に答える
1

質問は少し古いですが、つまずいたので、別の提案があります。

ps xu | awk '/[t]omcat/{print $2}'

実行中の tomcat と awk プロセス自体を返します。こちらを参照してください

<user>     2370  0.0  0.0  26144  1440 pts/7    R+   10:51   0:00 awk /[t]omcat/{print $2}

awk プロセスは xargs を実行する前に即座に終了するため、xargs の 1 つの終了コードは 0 と等しくありません。

実行してみてくださいkillall tomcat

于 2015-12-20T10:01:34.023 に答える