0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【学習】Linuxコマンド Day9

Posted at

おさらい

前回まで学習した内容はこちらです

今日学ぶこと

  • プロセス
  • プロセスの表示
  • ジョブ
  • ジョブの表示

プロセスとは

Linuxはプログラムの実行をプロセスという単位で管理している。
実行されているプログラムに対し、プロセスID等の情報を追加したまとまりで、管理しやすくなる。
メモリで実行されたタイミングでプロセスとなる。
メリットとしては例としてプロセスIDが存在することで、同じプログラムが実行された場合でも別のプロセスとわかる。
しっかり区別できるということである。
LinuxはマルチユーザーシステムのOSであることからデータが混ざってしまうなどのトラブルを防ぐためにもプロセスでの管理を行う。

プロセスの表示(psコマンド)

実行中のプロセスを表示する

現在実行中のプロセスを表示するためにはpsコマンドを使用する。

$ ps
  PID TTY          TIME CMD
1498  tty      00:00:00 bash
1519  tty      00:00:00 ps

上から順にBashのプロセス、psコマンドのプロセスとなる。
psコマンドを出力した際の列の意味はこちら。

意味
PID プロセスID
TTY 標準入出力に設定されている端末
TIME CPUを使用した時間
CMD コマンド名

プロセスがプログラムに対し情報が追加されたまとまりであることが確認できた。

詳細情報付きで表示する(uオプション)

詳細情報つきでプロセスを表示してみる
uオプションを使用するが「-」は前につけないという点に注意。(BSDオプション)

$ ps u
USER       PID  %CPU %MEM    USZ    RSS TTY      STAT START  TIME COMMAND
imagata    1498  0.0   0.1 115684   2348 tty1     Ss   13:57  0:00 -bash
imagata    1519  0.0   0.1 155448   1840 tty1     R+   14:22  0:00 ps u

一番左側USERは「誰の権限で実行されたプロセスか」を表している。
他のユーザーが勝手に操作はできないようになっている。

端末を持たないプロセスも表示末う(xオプション)

$ ps x

xオプションを使用することで標準入出力に設定されている端末がないプロセスも表示できる。以下は一部

1572 ?        Ss      0:00 [kworker/0:1]

このように端末が設定されていないプロセスをデーモンという。
見えないところで働いているというイメージ。

すべてのユーザーのプロセスを表示

psコマンドは現在ログインしているユーザーのプロセスのみ表示するが、aコマンドを使用することですべてのユーザーのプロセスを表示することが可能。

$ ps a

これらを利用してデーモンを含むすべてのユーザーのプロセスの数を数えてみる。

$ ps ax | wc -l
100

100と表示さているが、列名の行も含むため-1をした結果が正しい。
そのため99個であることがわかった。

ジョブとは

実行されているコマンドラインのことをジョブと呼ぶ。
例えば1行のコマンドラインにコマンドが2つ存在した場合、ジョブは1つ、プロセスは2つとなる。
視点を意識すると覚えやすい。
カーネル視点→コマンドの実行の単位
ユーザー視点→コマンドラインの実行の単位

ジョブの表示(jobsコマンド)

ジョブの一覧を表示するためにはjobsコマンドを使用する。

$ jobs
$ 

実行してみても何も表示されない。
これはコマンドラインを実行していないため。

$ man bash

bashのマニュアルを表示したあとCtrzを入力し、プロンプトに戻る。
再度jobsコマンドを実行すると、、、

$ jobs
$ [1]+  Stopped                  man bash

これは停止中のジョブを表示している。
左側の[1]はジョブ番号。プロセスでいったところのプロセスID
ただし、マシン内で一つの番号が割り当てられているわけではなく、シェルごとに割り当てられているため注意。
-lコマンドを使用するとプロセスIDも同時に表示できる。

$ jobs -l
$ [1]+  1556 Stopped                  man bash

おつかれまでした

今回は少し短めの内容でした。
詳細情報を表示したりすると数値や英字が複数の列で表示されるので意味をよく理解していないと肌感が悪いですが、一つ一つ整理して覚えていけば怯えなくてよい。と思っています。
そして、プロセス、ジョブについて机上での学習で(資格勉強)なんとなく覚えておりましたが実際に動かして確認することでそれらが存在する意義がよく理解できたと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?