いくつかの異なる方法でプロセスの作業ディレクトリを見つけることができることを知っていますが、その逆を実行する方法はありますか?ノードにはいくつかのサーバーアプリケーションがありますが、残念ながらこれをプロセスとして区別するのが難しく(すべて出力に表示されますnode server.js
)、ps
特定のサーバーが実行されているかどうかを簡単に確認する方法があることを望みました。
つまり、私が答えるべき質問は次のとおりです。ディレクトリが与えられたら、作業ディレクトリでプロセスが実行されています/x/y/z
か?node server.js
/x/y/z
これまでの最善の試みは、ps -ef | grep "[n]ode server.js"
PIDを切り取り、ループを介してpwdx
各PIDをチェックすることです。うまくいきますが、面倒でより良い方法があるかどうかを知りたいです。
ベストアンサー1
pwdx は PIDS を受け入れるので、次のことができます。
$ pwdx $(ps -C "node server.js" --format pid --no-headers)
2781: /home/user
4405: /home/user/src.git/
また、.zshrcまたは.bashrcに関数を定義することもできます。
function select_by_dir()
{
if (( $# == 0))l then
pwdx $(ps -C "node server.js" --format pid --no-headers)
else
pwdx $(ps -C "node server.js" --format pid --no-headers) | grep $1
fi
}
}