Linuxカーネルがコマンドを実行する
次のように入力したとします。
$ echo hello linux!
hello linux!
この時、Linux内部では次のような処理が行われています。
- echoという文字列を受け取る
- echoという名前のコマンドを探す
- 見つかったコマンドを実行する
- 実行結果を画面に表示する
3がコマンドの実行になりますが、Linuxの中核であるLinuxカーネルという部分が実行します。
シェルがLinuxカーネルを操作する
$ echo hello linux!
hello linux!
上記のコマンドはシェルという形式です。
echoコマンドを実際に処理するのはカーネルですが、ユーザはカーネルを直接操作するのではありません。
シェルを通して、カーネルに命令を送っているということになります。
つまりシェルは、カーネルのインターフェースとなっているソフトウェアです。
コマンドが実行される仕組み
実行中のコマンドの実体をプロセスと呼びます。
- コマンドはディスク上に保存されたプログラムである。
- コマンドが実行されると、該当コマンドがHDDやSSDからメモリ上に展開されて、実行される。
- コマンド実行の実体をプロセスと呼ぶ。
1つ1つの実体=プロセスにはPIDというIDが割り当てられる。
psコマンドで実行中のプロセスを一覧表示する。
構文
ps
例
$ ps
PID TTY TIME CMD
170 pts/4 00:00:00 bash
186 pts/4 00:00:00 ps
PID...プロセスに割り当てられたID。
TTY...どのターミナルから実行されたかを表す。
CMD...実行されているコマンド。
psコマンドにオプションを指定しない場合、psコマンドの実行ユーザーのプロセスのみが表示されます。
オプション
オプション | 説明 |
ax | psを実行したユーザー以外のユーザーのプロセスも表示する。 |
killコマンドでプロセスを終了させる
特定のプロセスを終了させるには、killコマンドを使用します。
構文
kill [PID]
例
$ ps
PID TTY TIME CMD
170 pts/4 00:00:00 bash
189 pts/4 00:00:00 ps
$ ps 189
PID TTY STAT TIME COMMAND
$ ps
PID TTY TIME CMD
170 pts/4 00:00:00 bash
191 pts/4 00:00:00 ps
上記はほとんど意味のないkillの例ですが、1行目のpsの結果の2つ目のプロセスを、6行目のkillコマンドで終了させています。
AWSでの環境構築で手間取ることはありませんか?環境構築にはLinuxの基礎知識が不可欠だと悟り、私はこの本でLinuxを勉強し直しました。