回答:
grepの-vスイッチは結果を逆にし、キューから除外します。次のようにします:
ps aux | grep daemon_name | grep -v "grep daemon_name" | awk "{ print \$2 }"
更新しました。次のように-Cスイッチを使用してコマンド名を指定することもできます。
ps -C daemon_name -o pid=
後者-oは、リストに含める情報の列を決定します。pidプロセスID列のみをリストします。そして、=その後の等号pidは、その列のタイトルがないことを意味するため、明確な数字(PID)のみを取得します。
お役に立てれば。
文字クラスのトリックを使用できます。「[d]」は「d」のみと一致しません。
ps aux | grep [d]aemon_name | awk "{ print \$2 }"
私はこれを使用することを好む| grep -v grep。
| grep -v grep、コードを再検討すると理解しやすくなります。
"[d]" does not match "[d]" only "d"ですか?
grepコマンドはコマンド自体のps出力行と一致しませんgrep(元の質問では「2番目のPID」と呼ばれていました)。expression a[xy]dはtextと一致しませんa[xy]dが、text axdまたはtextと一致しますayd。したがって、expression はtextと[f]oo一致しますfooが、textとは一致しません[f]oo。それが明確であることを願っています。
psより信頼性の高い代替手段がある場合は、の出力の解析を避けてください。
pgrep daemon_name
pidof daemon_name
pgreppidof完全に一致しながら部分文字列で検索-私が必要なものを完全に!ありがとう!
pgrep名前でプロセスのpidを探すために使用します:
pgrep proc_name
結果に追加のプロセス名(-l)がある場合:
pgrep -l proc_name
プロセス名(-l)および引数(-f)を探して表示します。
pgrep -lf proc_name_or_argument
良い点pgrepは、一致としてそれ自体を報告しないことです。ただし、pidを取得してからpgrep、対応するプロセスを終了する必要はありませんkill。pkill代わりに使用します:
pkill proc_name
(デフォルトではなく)SIGKILL信号(-9または-KILL)を指定SIGTERMします。
pkill -9 proc_name
プロセス名(-l)と引数(-f)を探し、シグナル(または)で-I強制終了する前に確認を求めます():SIGKILL-9-KILL
pkill -KILL -Ilf proc_name_or_argument
この-Iオプションはpkill、OS X Mavericksなどの一部のバージョンでのみ利用可能であることに注意してください。
この行は、「grep」を除くpid(プロセスID)を返します
PID=$(ps aux | grep '/usr/bin/python2.7 manage.py SES__boto3_sqs_read' | grep -v grep)