Linuxプロセスとは?基本概念から確認コマンドまで初心者向けに徹底解説
生徒
「Linuxを勉強していると『プロセス』という言葉がよく出てくるのですが、これって何のことですか?」
先生
「プロセスというのは、簡単に言うと『今、コンピュータの中で動いているプログラム』のことですよ。」
生徒
「プログラムそのものとは違うんですか?」
先生
「良い視点ですね。プログラムは『料理のレシピ』、プロセスは『実際に料理を作っている最中の状態』と考えると分かりやすいですよ。詳しく見ていきましょう!」
1. Linuxの「プロセス」とは何か?
Linuxの世界で最も重要な概念の一つが「プロセス」です。初心者の方には少し難しく聞こえるかもしれませんが、実は私たちがパソコンやスマートフォンを使っている間、常に裏側で動いているものです。
プロセスとは、実行中のプログラムのことを指します。たとえば、あなたがLinuxのターミナル(黒い画面)を開いて何か入力をしたり、ブラウザでWebサイトを見たりしているとき、コンピュータの内部ではそれらを動かすためのプロセスが生成されています。
プログラムそのものは、ハードディスクやSSDなどの保存場所に置かれている「ただのファイル(データ)」です。しかし、そのファイルが実行されて、コンピュータの頭脳であるCPUや、作業机であるメモリを使って動き出した瞬間に「プロセス」という名前に変わるのです。
2. プログラムとプロセスの違いを例え話で理解する
プログラミング未経験の方でも分かりやすいように、料理に例えて説明します。Linuxにおけるプログラムとプロセスの関係は、「料理のレシピ本」と「実際に料理をしているキッチン」の関係にそっくりです。
- プログラム:本棚に並んでいる「カレーの作り方」が書かれたレシピ本です。これだけではカレーは食べられません。
- プロセス:レシピを見ながら、実際にコンロの火をつけ、野菜を切っている「調理中の状態」です。
レシピ本(プログラム)が1冊しかなくても、複数の料理人(コンピュータの実行単位)がいれば、同時にいくつもの鍋でカレーを作る(複数のプロセスを立ち上げる)ことができます。このように、一つのプログラムから複数のプロセスが生まれることもあるのがLinuxの特徴です。
3. 全てのプロセスには「PID」という背番号がある
Linuxシステムの中では、驚くほどたくさんのプロセスが同時に動いています。システムはこれらを一つひとつ区別するために、PID(プロセスID)という数字を割り振っています。
PIDは、人間でいうところの「マイナンバー」や、スポーツ選手の「背番号」のようなものです。LinuxはこのPIDを使って、「どのプロセスがどれくらいメモリを使っているか」や「どのプロセスを終了させるか」を管理しています。
一番最初に動き出すプロセスには通常「1」という番号が振られ、そこから次々と新しいプロセスが生まれていく仕組みになっています。この親子関係のような繋がりも、Linuxを理解する上での面白いポイントです。
4. psコマンドで動いているプロセスを見てみよう
では、実際に自分のパソコンでどんなプロセスが動いているか確認してみましょう。使うのはpsというコマンドです。これは「Process Status」の略で、現在のプロセスの状態を表示してくれます。
まずは、自分が現在使っているターミナルに関連するプロセスだけを表示してみます。
ps
PID TTY TIME CMD
1234 pts/0 00:00:00 bash
5678 pts/0 00:00:00 ps
上記の実行結果を見てみましょう。PIDの列に数字が表示されていますね。CMDの列にあるbashというのは、あなたが今命令を入力している窓口となるプログラムのことです。ps自体も、実行した瞬間にプロセスとして動くので一覧に表示されます。
5. システム全体のプロセスを確認する「ps aux」
先ほどのコマンドでは自分の周りのことしか分かりませんでしたが、Linuxの裏側でこっそり動いているシステム全体のプロセスを見たいときは、オプションを付けて実行します。最もよく使われるのがauxという魔法の言葉です。
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 168604 9688 ? Ss 09:00 0:01 /sbin/init
user 2000 0.5 2.0 850000 45000 ? Sl 09:05 0:15 /usr/bin/firefox
このように実行すると、画面いっぱいにプロセスが表示されます。%CPUはCPUをどれくらい使っているか、%MEMはメモリをどれくらい使っているかを示します。パソコンが重いなと感じたときは、このコマンドで犯人探しをすることもあります。
6. リアルタイムに監視する「top」コマンド
psコマンドは「その瞬間」を切り取った写真のようなものですが、刻一刻と変化する状況を動画のように見たいときはtopコマンドを使います。
top
top - 10:00:01 up 1:00, 1 user, load average: 0.05, 0.03, 0.01
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si
このコマンドを実行すると、数秒おきに画面が更新され、今まさに頑張って動いているプロセスが上位に表示されます。終了したいときはキーボードの「q」を押すと元の画面に戻れます。
7. プロセスを終了させる「kill」コマンド
アプリが固まってしまったり、プログラムが暴走して止まらなくなったりしたときに使うのがkillコマンドです。物騒な名前ですが、要するに「プロセスに終了命令を送る」ためのコマンドです。
使い方は非常にシンプルで、kill [PID]と入力します。例えば、PIDが9999のプロセスを止めたい場合は以下のようになります。
kill 9999
これでも止まらない頑固なプロセスには、さらに強力な-9というオプションを付けることもありますが、まずは優しく終了を促すのが基本です。誰かが使っている大切なプロセスを勝手に消さないように注意しましょう。
8. 特権ユーザー(ルート)でのプロセス管理
自分のプロセスだけでなく、システム全体の重要なプロセスを操作するには、管理者権限が必要になります。Linuxではこの最強の権限を持つユーザーをroot(ルート)と呼びます。
例えば、システムに不可欠なサービスを再起動したり停止したりする場合、一般ユーザーでは拒否されてしまいます。その際はルート権限でコマンドを実行します。
kill 101
bash: kill: (101) - Operation not permitted
このように、他のユーザーが動かしているプロセスやシステムに関わるものを操作しようとすると、「許可されていません」と怒られます。ルートユーザーはコンピュータの全ての権限を持っているため、操作には細心の注意が必要です。
9. フォアグラウンドとバックグラウンド
プロセスには「目の前で動いているもの」と「裏側で動いているもの」の2種類があります。
- フォアグラウンド:今まさにあなたが操作している状態。そのプログラムが終わるまで次の入力ができません。
- バックグラウンド:裏側でこっそり動いている状態。その間にあなたは別の作業をターミナルで続けることができます。
コマンドの最後に「&」を付けて実行すると、そのプロセスはバックグラウンドで動き出します。例えば、すごく時間がかかる計算プログラムを動かすときは、バックグラウンドにしておくと待ち時間を有効に使えます。
./heavy_script.sh &
[1] 12345
これで、スクリプトの実行が終わるのを待たずに、次のコマンドを打ち込めるようになります。Linuxがマルチタスク(同時にたくさんのことをこなす)が得意なのは、この仕組みがあるからです。