LoginSignup
0
0

More than 1 year has passed since last update.

Linux基礎学習まとめ⑥ プロセスとは

Posted at

概要

Linuxにおいて、実行中のアプリケーションを管理するプロセスについてメモしておく。

実行環境

  • macOS BigSur 11.4
  • CentOS7 (macOS上でLinux環境を構築する方法はこちらを参考にしました)

プロセスとは?

Linuxでは、実行中のプログラム(アプリケーション)を管理する単位をプロセスと呼ぶ。
各プロセスは、優先度順(Nice値)や、時間ごとにCPUを使用するラウンドロビン方式、FIFO(First In First Out)方式などで、実行順序がスケジューリングされる。

ジョブ

シェルが管理するプログラムの単位をジョブという。
何かの作業中に後ろで動かすバックグラウンドジョブ、対のフォアグランドジョブ

例)

$ sleep 3600& (バックグランドで実行したい場合、'&'をつける。'sleep'はn秒スリープするプロセス)
$ sleep 3601&
$ sleep 3602&
$ jobs (実行中のジョブを確認するためのコマンド?)
[1]   Running                 sleep 3600 &
[2]-  Running                 sleep 3601 &
[3]+  Running                 sleep 3602 &
$ %1 (フォアグランドジョブにするジョブを指定、'%..'の使い方は様々)
sleep 3600
^Z ('Ctrl + z'でフォアグランドジョブをサスペンド(停止))
$ %- ('-'のついたジョブをフォアグランドジョブにする)
$ %% ('+'のついたジョブをフォアグランドジョブにする)
$ fg (+のついたものから順に実行していく?)

シグナル

プロセスにシグナルというイベントを送信して、プロセスを制御する。
よく使うのは、Ctrl + Cのプロセスを 終了させるシグナル。
kill -lコマンドで、シグナル一覧を表示できる。

例)

$ cat loop.sh
while true
do
    sleep 3600
done
:w (書き込み)
^Z (プロセスをサスペンド)
$ chmod 755 loop.sh
$ ./loop.sh
^C (割り込みシグナルを送信し、プロセスを終了する)

プロセス間通信

複数のプロセスがコミュニケーションを取りながら同期したり、動作を変更して達成することがある。これをプロセス間通信という。
詳しい動作は後々勉強することになると思われるため、ここではキーワードのみ書いておく。

  • System V IPC(Inter Process Communication)
    • 共有メモリ (shared memory)
    • セマフォ (semaphore)
    • メッセージキュー (message queue)
  • ソケット
  • パイプ
  • シグナル

プロセスに関係するコマンド集

ps

プロセスに付与されている一意のID(プロセスID)、自身のプロセスIDは$$で取得可能。
現在実行中のプロセスのスナップショットを表示する。
PPIDを見れば親プロセスがわかる。

trap

送信されたシグナルごとの処理を返す。
このコマンドを受け取った際には、プロセスが終了しないので、Ctrl + zkill [option]コマンドなどで終了させる必要がある。

例)

trap echo "...Ctrl + C is pressed." 2 

stty -a

シグナルとキーの割り当てを返してくれる。
これは、慣れるまではめちゃめちゃお世話になりそうな予感。

終わりに

参考文献を最初から読んでいくと今回はネットワークについてまとめるべきである。
しかし、未だに理解できているとは言い難い。
今後Ruby on Railsを勉強しアプリケーションを作る予定であるため、その際に改めて記事にしたいと思う。

参考文献

この記事は以下の情報を参考にして執筆しました。
- Linux標準教科書(ver.3.0.2)

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