以下は、提供された英文文本を日本語に翻訳したものです。原文の意味、语气、以及细微な違いを保つように努めました。

Unix / Linux - Processes

Unix / Linux - プロセス管理

こんにちは、将来のプログラマーたち!今日は、Unix/Linuxのプロセスの世界に興味深い旅に出発します。あなたの近所の親切なコンピュータサイエンスの先生として、この基本概念をガイドするのを嬉しく思います。プログラミングが初めての人も心配しないでください。基本から始めて、少しずつ進んでいきます。で、コーヒー(またはお茶、あなたの好み次第)を一杯取り、一緒に潜りましょう!

プロセスとは?

まず、プロセスが実際に何かを理解しましょう。忙しい厨房を思い浮かべてください。それぞれの料理を作っている料理人はプロセスと考えられます。彼らには独自の材料(リソース)、レシピ(プログラム)、そして目標(出力)があります。コンピュータの世界では、プロセスは単に実行中のプログラムです。

プロセスの起動

Unix/Linuxでのプロセスの起動は簡単です。主に2つの方法があります:

  1. フォアグラウンドプロセス:コマンドを入力してEnterキーを押します。
  2. バックグラウンドプロセス:コマンドの最後にアンパサンド(&)を追加します。

以下に例を示します:

# フォアグラウンドプロセス
$ 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

このコマンドはプロセスツリーを表示し、親子関係を示します。

ゾンビプロセスと孤児プロセス

では、特別なタイプのプロセスについて話しましょう:

  1. ゾンビプロセス:実行が完了したがプロセステーブルにまだエントリが残っている子プロセス。料理人が料理を完了したが、まだ退勤していないようなものです。
  2. 孤児プロセス:親が完了または終了したが、まだ実行中のプロセス。ヘッドシェフが家に帰った後もまだ働いているサブシェフのようなものです。

ゾンビプロセスがいるか確認するには以下を使用します:

$ 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