CentOS 7を使用しています。スクリプト変数からプロセスの「デフォルトPID」を取得しようとしています。これは私のスクリプトです。
#!/bin/sh
set -e
PID="$APP_ROOT/shared/pids/puma.pid"
echo "before ..."
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
echo "after ..."
xxx
ただし、「after...」という単語は印刷されません。この行には何かがあります。
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
これにより、特に実行中のプーマプロセスがない場合、状況が正しく機能しない可能性があります。デフォルトのPIDをキャプチャできるように上記の内容をオーバーライドするか、少なくとも存在しない場合は、次の行に実行を渡すことを許可する方法を知っていますか?
答え1
を保存するには、set -e
次の手順を実行してpgrepが失敗するのを防ぎます。
MASTER_PID=`pgrep -f '^([^ ]*/)?puma ' || true`
答え2
set -e
コマンドがゼロ以外の状態で終了するとすぐに終了します。
pgrep
一致するものがないと失敗するため、その文をPID
実行できません。echo "after"
set -e
削除すると問題が解決するようです。