これが私のpsauxの出力です:
ps aux | grep "node"
root 2501 0.0 3.4 720400 68512 ? Sl 16:09 0:03 node /etc/skbx/Host/skbx.js 8081 tula13 8082 8084 8085 10.8.0.6
root 20586 0.0 0.1 17396 2664 pts/16 S+ 21:29 0:00 grep --color=auto node
2番目のものを無視すると、ノードプロセスがあります。 skbx.jsを実行しているノードプロセスのPIDをbashで正確に把握する必要があります。
どうすればこれを行うことができますか?ありがとう。
一般に、既知のコマンドラインのPIDを探している場合は、PIDを抽出するために出力をフィルタリングする必要がないため、ps | grep
よりもpgrep
の方が適しています。 pgrep
と-f
を使用して、コマンドライン全体に一致させることができます。
pgrep -f 'node /etc/skbx/Host/skbx.js'
他の基準の中でも、親プロセスIDと制御端末によってプロセスをターゲットにすることもできます。
pgrep
がインストールされていない場合は、パイプラインでgrep
を使用できます。次の例では、grep
に提供されたパターンの文字クラスを使用して、grep
自体が出力に表示されないようにします。これは、出力をgrep -v grep
などにパイプするよりも入力が少なくなります。
ps aux | grep '[n]ode /etc/skbx/Host/skbx.js' | awk '{print $2}'
grep
出力にリストされているps
コマンドには、grep
で使用される結果のパターンと一致しない角括弧リテラルが含まれます。