web-dev-qa-db-ja.com

正確なnode.jsアプリケーションのPIDを把握する

これが私の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で正確に把握する必要があります。

どうすればこれを行うことができますか?ありがとう。

1
Maxim V. Pavlov

一般に、既知のコマンドラインの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で使用される結果のパターンと一致しない角括弧リテラルが含まれます。

2
zackse