自動化しようとしています。Forever JSは開発サーバーを引き続き実行します。これを行うには、永続プロセスを確認して停止して別のプロセスを開始する必要があります。実行して
sudo forever list
次の結果が表示されます。
メッセージ:永久に実行されるプロセス データ:永久にuidコマンドスクリプトPID IDログファイルの稼働時間 データ: [0] 0NQH /usr/bin/nodejs app.js 17047 17049 /home/ubuntu/.forever/0NQH.log 0:2:4:58.594
上記の出力から必要です。PIDこれは17049現在を次のように次のコマンドに入力します。
sudo forever stop {{pidfromabove}}
これを達成するために、私のスクリプトで主に2つの文字列の間を見つけるために多くの努力をしました。application.jsそして/家ただし、何らかの理由で行全体を印刷し続けます。私はsedとawkのさまざまな組み合わせを試しました。次のコマンドで提供するために上記からpidをどのように取得できますかstop
?
答え1
これはユースケースのように見えますawk
。目的のPIDが常に行の7番目の要素になるように出力形式が安定していると確信している場合は、PIDが印刷されますapp.js
。
sudo forever list | awk '/app\.js/ { print $7 }'
答え2
あなたが経験している問題は、おそらく出力がstdoutではなくstderrにあるためです。この場合、次のことを試すことができます。
sudo forever list 2>&1 | sed 's/.*app.js [0-9]* \([0-9]*\) /\1/'
2番目のPIDにのみ応答する必要があります。
これにより、次のことができます。
sudo forever stop `sudo forever list 2>&1 | sed 's/.*app.js [0-9]* \([0-9]*\) /\1/'`