サポートエンジニアとしての私の最も嫌いな活動の1つは、ps
であるがれきの山をふるいにかけることでした。 指図。必然的に、Javaプロセスはエラーになり、サービスを再起動するために開く必要のあるポートでスタックします。サービスはupと表示されます 、しかし機能はありませんでした。この状況は後輩の技術者を混乱させ、行き詰まったプロセスを見つけてそれを殺すことによって何度も何度も修正するように求められたものでした。特定のプロセスが実行されているかどうかを確認したり、プロセスが子プロセスを生成したかどうかを確認したりする必要がある場合もあります。これらのシナリオは、コントロールグループを理解することが非常に役立つ場合です。コントロールグループは、基本レベルで、親に基づいてプロセスを編成し、次にプロセスを階層に編成します。
ここでは、標準のps
を改善する2つの方法を見ていきます。 ほとんどの人が使用するコマンド。多くの人がps
をペアにしていることを知っています grep
を使用 、そしてピーカンパイやノアズミルのように、私はこの習慣を完全に支持します。また、プロセス階層の理解が少し簡単になるため、次の2つの方法を確認することをお勧めします。
方法1
最初の方法は、標準のps
です。 プロセスツリーを有効にしたコマンド。このコマンドを実行する場合:
[root@fed31 ~]# ps xawf -eo pid,user,cgroup,args
次の出力が結果になる可能性があります:
この出力は非常に冗長であるため、短縮されています。ただし、このコマンドを使用すると大量の情報を受け取ることができます。左から順に、PID、USER、CGROUP、およびCOMMANDがあります。
この出力は、どのプロセスがどの親ジョブに属しているかを正確に確認するための優れた方法であることがわかりました。また、かなりユーザーフレンドリーな形式です。コマンド自体は定期的に入力するのが大変なので、シェルエイリアスを設定することをお勧めします。エイリアスを作成する方法の詳細については、こちらのテーマに関する私の記事を参照してください。今のところ、次のようなものが適切です:
alias pscgroup='ps xawf -eo pid,user,cgroup,args'
方法2
次のオプションはsystemd
です。 効用。この方法は、私の謙虚な意見では、どのジョブがどの親プロセスまたは所有者に属しているかを確認するためのさらに優れた方法です。これを入力する場合:
[root@fed31 ~]# systemd-cgls
結果は次のようになります:
繰り返しになりますが、出力の長さのためにスクリーンショットが短くなっています。このバージョンでは、どのプロセスがどのユーザーに属しているかをより簡単に確認でき、さらに各プロセスはその子プロセスを情報のサブセットとして表示します。この方法は、プロセスの編成を確認し、所有権をすばやく見つけるための非常に簡単な方法です。
プロセスを表示するこれらの2つの方法は、何が何を所有しているのかを把握するのに役立ちました。うまくいけば、これらもお役に立てば幸いです。
[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。]