失敗した終了コードを返さずにプロセスが存在するかどうかを確認するには?

失敗した終了コードを返さずにプロセスが存在するかどうかを確認するには?

私はAmazon Linuxを使用しています。まだ実行されていない場合は、プロセスを開始したいと思います。これはJenkins Mavenジョブに含まれるbashスクリプトです。だから私は持っています

pids=$(pidof /usr/bin/Xvfb)
if [ ! -n "$pids" ]; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

残念ながら、プロセスがない場合、 "pids=$(pidof /usr/bin/Xvfb)" 行は失敗した終了コードを返し、その後のその他の行は実行されません。失敗した終了コードを返さないように上記の内容を書く方法はありますか?

ベストアンサー1

で実行している場合は、set -eコマンド|| trueの後に追加してコマンドの失敗を無視します。

pids=$(pidof /usr/bin/Xvfb || true)
if [ ! -n "$pids" ]; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

ただし、pidofプロセスがない場合はゼロ以外の状態を返すため、出力が空であることを確認するのではなく、戻り状態を直接テストできます。

if ! pidof /usr/bin/Xvfb >/dev/null 2>&1; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

おすすめ記事