2016-06-20 27 views
1

私はJenkins経由でLinuxシェルでpkillコマンドを実行しています。 このコマンドは、プロセスが存在しない場合は常にビルドに失敗します。Jenkins経由でシェルで "pkill"を実行する - ビルドに失敗する

sudo docker exec mycontainer sh -c 'pkill -f processToKill || true ' 

なぜですか? pkillが失敗した場合でも、どのように成功させることができますか?

+1

外部コマンドがゼロ以外の値を返していると思われますので、 '|| true': 'sudo docker exec mycontainer sh -c 'pkill -f processToKill' || true ' – bishop

+0

いいえ、これは当てはまりません。 docker execは、ネストされたスクリプトが返すものを返します。私はpkillの代わりにエコーを行うことでそれを確認できます – Skip

+0

これは '||本当のことは...驚くべきことです。 **非常に驚くべき。容疑者 - それに関係する何か - 匿名化 - 隠蔽レベルは驚くべきものです。 –

答えて

4

あなたは自分を殺している - || true部分に到達することはありません。

$ sh -c 'pkill -f processToKill || true' ; echo $? 
Terminated 
143 

理由はあなたがpkillに提供-fフラグです。 manページから:

-f, --full 
      The pattern is normally only matched against the process name. 
      When -f is set, the full command line is used. 

あなたはpkillコマンド文の処理選択を改善する必要があるので、それはあなたがshに渡すコマンドラインをキャッチしません。

関連する問題