CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさんこんにちは。株式会社パイプラインの濱田です。前回まではLinuxのファイル操作について取り上げましたが、Linuxサーバー管理のプロセス管理も重要な仕事です。今回より、Linuxのプロセス管理入門について取り上げていきます。
そもそもLinuxにおけるプロセス管理とは、何をすべきなのでしょうか。それ以前に、プロセスとは何なのでしょうか。プロセスとは、大まかな表現で説明しますと、OS上で実行されているプログラムのことを指します。例えば、1つのサーバーでWordPressのようなデータベースを使うブログシステムが動いているとするならば、そのサーバーにはWEBサーバー(ApacheやNginxなど)のプロセスやデータベースサーバー(MySQLなど)のプロセスが動いている、ということになります。
それでは、これらのプロセスを管理する、とは何をすればよいのでしょう。書籍やWEB上の記事では、さまざまな技術レベルの様々な立場に向けた解説が多く、プロセス管理のイメージが掴みにくいかと思われますが、本コラムでのゴールは以下を目的とします。
ターミナルにログイン後、以下のように、何も引数やオプションをつけず ps コマンドを実行します。
ps
一番右の列 (CMD) を見ると、 bash と ps が表示されています。これは、ログインしたあなた自身がシェルとして bash を起動していることと、端末から ps コマンドを実行しているためです。(デフォルトのシェルがbash以外ですと違う表示になります)
他のプロセスを起動して、それがどう表示されるかも実験してみましょう。端末を複数起動するのも手間ですので、以下のように sleep コマンドをバックグラウンドで起動します。
sleep 60 &
それでは再度、 ps コマンドを実行してみましょう。
先ほど、 bash と ps のコマンドが表示されましたが、もう1つ、 sleep コマンドも表示されていることがわかります。1分時間をおいて、再度 ps コマンドを実行してみましょう。
このように、 ps コマンドの出力からは sleep コマンドの表示が消えました。(バックグラウンドで実行されたsleepコマンドが終了したメッセージが表示されていますが、これが表示された時点で sleep コマンドのプロセスは終了しています)
ps コマンドには多くのオプションがあり、これらを組み合わせることで多くの情報を得ることができます。今回は、応用例として、筆者がよく利用するオプションの組み合わせと使いどころを紹介します。
ps -aef
コマンド出力結果の2列目(PID)はプロセス番号を、3列目(PPID)は親プロセスの番号が表示されています。なお、画面はこの1画面に収まっておらず自動でスクロールします。途中の表示をリアルタイムで目視確認したい場合、moreコマンドやlessコマンドと組み合わせるとよいでしょう。詳細は追ってまたの回に取り上げますが、プロセスの親子関係を把握することで、トラブルシュートに役立てています。
ps auxww
こちらのオプションの組み合わせでは、プロセスごとにCPU負荷やメモリ使用量、コマンドの引数やオプションを表示することができます。また、STAT列を見ることで、そのプロセスがどのような状態か、例えばディスクIO待ちなのか、ゾンビプロセスなのか、優先度はどれくらいなのかを知ることができます。
ps aufxww
先ほどの ps auxww をさらに人が見やすくしたのが ps aufxwwです。罫線表示をつかってプロセスの親子関係をより視覚的にわかりやすく表示しています。ただし、罫線の特殊文字を使っているので、表示する端末の文字コードによっては文字化けする可能性があり、また、 ps コマンドの結果を食わせるプログラムを書いたときなど、意図しない動作を引き起こすこともあるかと思いますので、人が手で実行するときに使用するオプションとして覚えておくとよいでしょう。
今回はスペースの関係で紹介を省略しますが、 pstree コマンドでプロセスツリーを表示させることにより、そのサーバーで起動しているプロセスの全体像を理解することも可能です。ただし、 pstree コマンドは環境によってはインストールされていないこともあります。
また、今回ご紹介した ps コマンドは、root ユーザーにならずとも、一般ユーザーであっても詳細に表示を行うことができるコマンドです。システムに負荷をかけない限りは何度実行しても損しないコマンドですので、業務の把握と自らの学習を兼ねて多く実行してみるとよいでしょう。
CTC 教育サービスではLinux をはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。
https://www.school.ctc-g.co.jp/category/
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes