以下は、提供された英文文本を日本語に翻訳したものです。原文の意味、语气、以及细微な違いを保つように努めました。
Unix / Linux - プロセス管理
こんにちは、将来のプログラマーたち!今日は、Unix/Linuxのプロセスの世界に興味深い旅に出発します。あなたの近所の親切なコンピュータサイエンスの先生として、この基本概念をガイドするのを嬉しく思います。プログラミングが初めての人も心配しないでください。基本から始めて、少しずつ進んでいきます。で、コーヒー(またはお茶、あなたの好み次第)を一杯取り、一緒に潜りましょう!
プロセスとは?
まず、プロセスが実際に何かを理解しましょう。忙しい厨房を思い浮かべてください。それぞれの料理を作っている料理人はプロセスと考えられます。彼らには独自の材料(リソース)、レシピ(プログラム)、そして目標(出力)があります。コンピュータの世界では、プロセスは単に実行中のプログラムです。
プロセスの起動
Unix/Linuxでのプロセスの起動は簡単です。主に2つの方法があります:
- フォアグラウンドプロセス:コマンドを入力してEnterキーを押します。
- バックグラウンドプロセス:コマンドの最後にアンパサンド(&)を追加します。
以下に例を示します:
# フォアグラウンドプロセス
$ ls -l
# バックグラウンドプロセス
$ long_running_command &
最初の例では、ls -l
はフォアグラウンドで実行され、ディレクトリの内容を表示します。二つ目では、コマンドはバックグラウンドで実行され、ターミナルの使用を続けることができます。
実行中のプロセスのリスト表示
では、厨房(システム)で働いているすべての料理人(プロセス)を見たい場合はどうしますか?その場合、ps
コマンドが役立ちます!
$ ps aux
このコマンドはすべての実行中のプロセスを表示します。厨房の隅々まで覗くようなものです!
以下は、あなたが見るであろう内容の説明です:
列 | 説明 |
---|---|
USER | プロセスの所有者 |
PID | プロセスID |
%CPU | CPU使用率 |
%MEM | メモリ使用率 |
VSZ | 仮想メモリサイズ |
RSS | レジデントセットサイズ |
TTY | ターミナルタイプ |
STAT | プロセス状態 |
START | 開始時間 |
TIME | CPU時間 |
COMMAND | コマンド名 |
プロセスの停止
時々、プロセスが暴走することがあります(すべてを燃やしてしまう料理人のようなもの)。その場合、停止する必要があります。以下のようにします:
$ kill PID
PIDを終了したいプロセスIDに置き換えます。もっと強力に停止したい場合は:
$ kill -9 PID
これは、料理人を即座に解雇するようなものです – 强制的な終了です!
親プロセスと子プロセス
Unix/Linuxでは、プロセスには家系図があります。プロセスが他のプロセスを作成すると、それが親となり、新しいプロセスは子となります。これは、シェフ(親プロセス)がサブシェフ(子プロセス)にタスクを割り当てるようなものです。
この関係を見るには以下を使用します:
$ pstree
このコマンドはプロセスツリーを表示し、親子関係を示します。
ゾンビプロセスと孤児プロセス
では、特別なタイプのプロセスについて話しましょう:
- ゾンビプロセス:実行が完了したがプロセステーブルにまだエントリが残っている子プロセス。料理人が料理を完了したが、まだ退勤していないようなものです。
- 孤児プロセス:親が完了または終了したが、まだ実行中のプロセス。ヘッドシェフが家に帰った後もまだ働いているサブシェフのようなものです。
ゾンビプロセスがいるか確認するには以下を使用します:
$ ps aux | grep Z
デーモンプロセス
デーモンプロセスは、厨房の24時間体制で働いているスタッフのようなものです。バックグラウンドで実行され、さまざまなサービスを提供します。例えば、sshd
デーモンは入ってくるSSH接続をリスニングします。
すべてのデーモンプロセスをリスト表示するには以下を使用します:
$ ps -eo 'tty,pid,comm' | grep ^?
topコマンド
top
コマンドは、すべてを一手に取り扱えるキッチンマニターです。実行中のシステムの動的リアルタイムビューを提供します。以下のように使用します:
$ top
ps
に似たテーブルが表示されますが、リアルタイムで更新されます。厨房のライブフィードを持っているようなものです!
ジョブIDとプロセスID
最後に、ジョブIDとプロセスIDの違いを明確にしましょう:
- プロセスID(PID):システム内の各プロセスに割り当てられるユニークな識別子。
- ジョブID:バックグラウンドで起動されたプロセスにシェルが割り当てる番号。
ジョブIDを見るには以下を使用します:
$ jobs
バックグラウンドジョブをフォアグラウンドに持ってくるには以下を使用します:
$ fg %job_id
ジョブIDは現在のシェルセッションに特化していますが、PIDはシステム全体に適用されます。
それで、みんな!Unix/Linuxのプロセス管理の基本をカバーしました。実践が完璧を生むことを忘れずに、あなたのシステムでこれらのコマンドを試してみてください。ただし、kill
コマンドには注意してください – 偶然的な終了を避けたいものです!
終わりに、私の教師としての初期のDaysのユーモラスな出来事を思い出しました。一度、kill
コマンドのデモ中に誤ってテキストエディタのプロセスを終了して、1時間分の未保存の作業を失ってしまいました。それを教訓にして – プロセスを遊び回る前に必ず作業を保存してください!
プロセスをCookingし続け、ハッピーコンピューティングを!
Credits: Image by storyset