私は持っています
pgrep -U herman | xargs --no-run-if-empty ps fp
COMMAND
しかし、検索を通じて列ごとにさらにフィルタリングしたいと思います。sh scriptName.sh Argument1
答え1
pgrep
あなたのためにする方が簡単かもしれません。
pgrep -U herman -f "sh scriptName.sh Argument1"
状況がそれよりも複雑な場合は、数値pgrep
パスを直接使用して/procを介して表示されるプロセス属性を確認できます(位置ps
とpgrep
確認が同じであるため、「厄介ではありません」)。例えば
#!/usr/bin/env zsh
# /bin/bash should work too, but haven't checked.
for candidate in $(pgrep -U herman); do
# skip any Python process
grep -q bin/python3 /proc/${candidate}/cmdline || break
# check whether this has any *.log file as stdin or stdout or stderr
for fd in /proc/${candidate}/fd/{0,1,2}; do
grep -q '.*\.log$' ${fd} && echo ${candidate} && break;
done
done
すべてのプロセス(Pythonを除く)がstd *に接続したファイルを確認する方法です。