プロセスが正しく開始されたことを確認できるように、サブシェルで開始されたプロセスのPIDをキャプチャしようとしています。そのプロセスはクーガーアプリケーションです。
sudo su - $APPUSER <<-BASH
PID="\$(bundle exec puma -C config/puma.rb)"
"\$(bundle exec puma -C config/puma.rb & export PID=$1)"
"\$(bundle exec puma -C config/puma.rb &)"
PID="\$(ps aux | grep \"[p]uma.*[u]nix.*$APPNAME\" | awk '{ print \$2}')"
BASH
奇妙なことは、何も返さないということです。環境なしでこれらのいずれかを実行すると、""
次のエラーが発生します。
-bash: line 22: [26740]: command not found
の数字[]
はpidです。スクリプトを再実行すると、次のような結果が得られるので、これがわかります(pidが存在することを確認してください)。
app is running with pid: 26740
私はheredocでコマンドを実行してコマンドを渡すので、これが起こると思います。sudo su
サブシェルから始まるバックグラウンドプロセスからpidを取得する方法。
答え1
内部PID
値をオーバーライドできません。小文字の環境変数を使用します。