LinuC レベル 1 Version10.0
技術解説無料セミナー
2022/4/24 開催

サーバープロセスの動作確認～実際の現場で求められる技術を紹介～

インターノウス株式会社（LPI-Japanアカデミック認定校）

竹本 季史© LPI-Japan / EDUCO all rights reserved.

会社紹介、自己紹介◼会社紹介：インターノウス株式会社⚫人材紹介サービス、人材派遣/SESサービス、IT未経験者の教育及び就職支援
サービス、法人研修サービス⚫未経験からインフラエンジニアやプログラマーになりたい方へ、無料で研修と就職支援サービスを行っています。
https://engineercollege.jp/lp/◼自己紹介：竹本 季史(たけもと ときふみ)⚫IT業界で約10年間勤務後、インターノウス株式会社エンジニアカレッジ講師。
⚫これまで約800人を未経験者からエンジニアに養成。Linuxサーバー(メール、OpenSSH、シェルスクリプト、DB、監視、演習)を担当。
⚫LinuCレベル1バージョン10.0の差分教材で「仮想マシン・コンテナの概念と利用」を執筆。
© LPI-Japan all rights reserved.

2

LinuCレベル１／レベル２ Version10.0とはLinuCとはクラウド時代の即戦力エンジニアであることを証明するLinux技術者認定✓現場で「今」求められている新しい技術要素に対応• オンプレミス／仮想化・コンテナを問わず様々な環境下でのサーバー構築• 他社とのコラボレーションの前提となるオープンソースへの理解• システムの多様化に対応できるアーキテクチャへの知見✓全面的に見直した「今」身につけておくべき技術範囲を網羅
今となっては使わない技術やコマンドの削除、アップデート、新領域の取り込み✓Linuxの範疇だけにとどまらない領域までカバー
セキュリティや監視など、ITエンジニアであれば必須の領域もカバー© LPI-Japan all rights reserved.

3

クラウドを活用できるITエンジニアに必須の技術がまとまっている
AWSなどのパブリッククラウドを活用するための技術

AWSなどのパブリッククラウドを活用するための技術間が欠けている状態

仮想マシン／コンテナ技術、クラウドセキュリティ、アーキテクチャ、ほかオンプレミスのサーバーサイドLinux技術

オンプレミスのサーバーサイドLinux技術【今まで／その他】

Version10.0© LPI-Japan all rights reserved.

4

本セミナーについて⚫本セミナーは「実際の現場で求められる技術の紹介」の3回目となります。
⚫今回のテーマはサーバープロセスの動作確認です。
⚫前半では、プロセスの動作をLinuCレベル1のコマンドを使って解説します。
またサーバープロセスの特徴について学びます。
⚫後半では、検証を通じてサーバープロセスの動作確認を行っていきます。

⚫本セミナーではCentOS7.9の最小限のパッケージを使用します。

© LPI-Japan all rights reserved.

5

本セミナーに該当するLinuC101の試験範囲•主題1.01：Linuxのインストールと仮想マシン・コンテナの利 • 主題1.04：リポジトリとパッケージ管理用• 1.04.1apt コマンドによるパッケージ管理• 1.01.1Linuxのインストール、起動、接続、切断と停止• 1.04.2Debianパッケージ管理• 1.01.2仮想マシン・コンテナの概念と利用• 1.04.3yumコマンドによるパッケージ管理• 1.01.3ブートプロセスとsystemd• 1.04.4RPMパッケージ管理• 1.01.4プロセスの生成、監視、終了• 主題1.05：ハードウェア、ディスク、パーティション、ファ• 1.01.5デスクトップ環境の利用
イルシステム•主題1.02：ファイル・ディレクトリの操作と管理• 1.05.1ハードウェアの基礎知識と設定• 1.02.1ファイルの所有者とパーミッション• 1.05.2ハードディスクのレイアウトとパーティション• 1.02.2基本的なファイル管理の実行• 1.05.3ファイルシステムの作成と管理、マウント• 1.02.3ハードリンクとシンボリックリンク• 1.02.4ファイルの配置と検索•主題1.03：GNUとUnixのコマンド• 1.03.1コマンドラインの操作• 1.03.2フィルタを使ったテキストストリームの処理• 1.03.3ストリーム、パイプ、リダイレクトの使用• 1.03.4正規表現を使用したテキストファイルの検索• 1.03.5エディタを使った基本的なファイル編集の実行© LPI-Japan all rights reserved.

6

本セミナーに該当するLinuC102の試験範囲•主題1.06：シェルおよびスクリプト• 1.06.1シェル環境のカスタマイズ• 1.06.2シェルスクリプト•主題1.07：ネットワークの基礎• 1.07.1インターネットプロトコルの基礎• 1.07.2基本的なネットワーク構成• 1.07.3基本的なネットワークの問題解決• 1.07.4クライアント側のDNS設定•主題1.08：システム管理• 1.08.1アカウント管理• 1.08.2ジョブスケジューリング
• 1.08.3ローカライゼーションと国際化• 主題1.09：重要なシステムサービス• 1.09.1システム時刻の管理• 1.09.2システムのログ• 1.09.3メール配送エージェント(MTA)の基本• 主題1.10：セキュリティ• 1.10.1セキュリティ管理業務の実施• 1.10.2ホストのセキュリティ設定• 1.10.3暗号化によるデータの保護• 1.10.4クラウドセキュリティの基礎• 主題1.11：オープンソースの文化• 1.11.1オープンソースの概念とライセンス• 1.11.2オープンソースのコミュニティとエコシス
テム© LPI-Japan all rights reserved.

7

本セミナーに該当するLinuC201の試験範囲•主題2.01：システムの起動とLinuxカーネル
••
•
•
•

2.01.1ブートプロセスとGRUB
2.01.2システム起動のカスタマイズ
2.01.3Linux カーネルの構成要素
2.01.4Linuxカーネルのコンパイル
2.01.5カーネル実行時における管理とトラブル
シューティング•主題2.02：ファイルシステムとストレージ管理• 2.02.1ファイルシステムの設定とマウント• 2.02.2ファイルシステムの管理• 2.02.3論理ボリュームマネージャの設定と管理•主題2.03：ネットワーク構成• 2.03.1基本的なネットワーク構成• 2.03.2高度なネットワーク構成• 2.03.3ネットワークの問題解決• 主題2.04：システムの保守と運用管理• 2.04.1makeによるソースコードからのビルドとインストール• 2.04.2バックアップとリストア• 2.04.3ユーザへの通知• 2.04.4リソース使用状況の把握• 2.04.5死活監視、リソース監視、運用監視ツール• 2.04.6システム構成ツール• 主題2.05：仮想化サーバー• 2.05.1仮想マシンの仕組みとKVM• 2.05.2仮想マシンの作成と管理• 主題2.06：コンテナ• 2.06.1コンテナの仕組み• 2.06.2Dockerコンテナとコンテナイメージの管理© LPI-Japan all rights reserved.

8

事前準備
# yum install -y psmisc httpd（psmisc,httpdパッケージをインストール）
インストール:httpd.x86_64 0:2.4.6-97.el7.centos.5

psmisc.x86_64 0:22.20-17.el7# yum list psmisc httpd（インストールできたことを確認）
インストール済みパッケージ
httpd.x86_64
psmisc.x86_64

2.4.6-97.el7.centos.5
22.20-17.el7@updates@base# firewall-cmd --add-service=http（httpのファイアウォールを許可）
success# firewall-cmd --list-services（httpのファイアウォールが許可されたことを確認）
dhcpv6-client http ssh© LPI-Japan all rights reserved.

9

プロセスについてプロセスについて⚫ プロセスとは？
⚫ プロセスがタスクを処理するにはリソースが必要⚫ プロセス一覧の表示⚫ psコマンドのオプション⚫ ps aux実行時の表示項目説明⚫ プロセスの所有者⚫ プロセスID⚫ プロセスの端末⚫ プロセスの親子関係⚫ watchコマンドでプロセス生成→終了を見る© LPI-Japan all rights reserved.

10プロセスとは？
⚫Linuxはユーザーやシステムが実行したコマンド（命令）をプロセスを生成して実行します。

コマンド実行••

ユーザーが手動実行
システムが自動実行

プロセス生成••カーネルがプロセスにリソース割り当て
プロセスが実行される

プロセス終了•命令されたコマンドの処理が終わるとプロセス終了© LPI-Japan all rights reserved.

11

プロセスがタスクを処理するにはリソースが必要⚫プロセスは、Linuxの核となるカーネルがリソース(資源)であるCPU、メモリを割り当てて、命令されたタスクを処理します⚫人の仕事に例えると、仕事をするために脳(CPU)に意識を向けてもらう
時間と仕事を広げられるだけの机(メモリ)をもらうイメージです
リソース割り当て

CPU

プロセス

プロセス

プロセス

メモリプロセス© LPI-Japan all rights reserved.

12

プロセス一覧の表示⚫Linux上では多くのプロセスが常に動作しています⚫プロセスの状況はpsコマンドで表示します⚫psコマンドは実行した時点のプロセス状況が表示されます© LPI-Japan all rights reserved.

13

psコマンドのオプション

標準教科書p.200

書式ps

補足[オプション]

オプション

説明

a

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

u

ユーザー名を表示する

x

端末を持たないプロセス(デーモンなど)を表示

f

親子関係をツリー状に表示する-e

全てのプロセスを表示する-l

詳細な情報を表示する-p PID

特定のPID(プロセスID)のプロセス情報のみ表示する-C プロセス名

指定した名前のプロセスのみ表示する-w

長い行は折り返して表示する

ハイフンなしがBSDオプション、ハイフンありがUNIXオプションと呼ばれています© LPI-Japan all rights reserved.

14

ps aux実行時の表示項目説明⚫ps auxはプロセスの情報を一覧で確認するために良く使用されます[root@localhost ~]# ps aux
USER
PID %CPU %MEM
VSZ
root1 0.0 0.3 125620
root
2 0.0 0.00
root
4 0.0 0.0
0

RSS TTY
3676 ?
0 ?
0 ?

STAT START
Ss
10:32
S
10:32
S<10:32

項目

TIME COMMAND
0:04 /usr/lib/systemd/systemd –(略)0:00 [kthreadd]
0:00 [kworker/0:0H]

説明

USER

プロセスを実行したユーザー

PID

プロセスID%CPU

プロセスが使用しているCPUの割合%MEM

プロセスが使用しているメモリの割合

VSZ

プロセスが確保している仮想メモリサイズ

RSS

プロセスが確保している物理メモリサイズ

TTY

プロセスが実行されている端末

COMMAND

実行中のプロセスを生成したコマンド© LPI-Japan all rights reserved.

15

プロセスの所有者⚫プロセスは通常、コマンドを実行したユーザーが所有者となります⚫プロセスの所有者の権限でファイルなどへのアクセスが行われます⚫psコマンドのUSER列で確認します© LPI-Japan all rights reserved.

16

プロセスID⚫プロセスにはそれぞれIDが付与されて管理されます⚫psコマンドのPID列で確認します© LPI-Japan all rights reserved.

17

プロセスの端末⚫端末とはシェルの入出力をする画面のことです⚫psコマンドのTTY列でプロセスを実行した端末を確認します⚫現在の操作中の端末はttyコマンドで確認できます⚫/dev/tty1～6：ローカル端末⚫/dev/pts/0～：仮想端末(xterm,kterm,gnome,ssh,telnetなど)© LPI-Japan all rights reserved.

18

CentOS7上のgnome端末のTTY© LPI-Japan all rights reserved.

19

プロセスの親子関係⚫プロセスには親子関係があります⚫親プロセスが生成したプロセスは子プロセスとなります⚫Linux起動時に作成されるプロセスはPID1のsystemdであり、全てのプロセスと親となります⚫親子関係を確認する方法には、psコマンドのfオプションやpstreeコマンド(psmiscパッケージ)があります© LPI-Japan all rights reserved.

20

プロセスの親子関係⚫ps auf⚫pstree -pbash(親)でps auf(子)が実行されている

systemdが全てのプロセスの親© LPI-Japan all rights reserved.

21

watchコマンドでプロセス生成→終了を見る⚫ watch -n 1 "ps aux | grep sleep" (sleepのプロセスを1秒間隔で見る)⚫ 他の端末を起動してsleep 5(5秒待つ)
TTY
pts/0

TTY
pts/1

sleep 5実行で生成され、5秒後に消える© LPI-Japan all rights reserved.

22

サーバープロセスについて

サーバープロセスについて⚫ サーバーとは？
⚫ サーバープロセスの特徴⚫ systemctlによるサーバーの制御⚫ systemctlの書式説明© LPI-Japan all rights reserved.

23

サーバーとは？
⚫サーバーとは、クライアントにサービスを提供するコンピュータです⚫代表例としてWebサイトを提供するWebサーバーがあります⚫Linuxはサーバー用途として広く使用されています
クライアント(PC・スマホ)

サーバー
リクエスト

ネットワーク

レスポンス

アプリケーション（PHP,Ruby,Javaなど）
ミドルウェア(Webサーバーなど）

OS(Linux,Windowsなど)© LPI-Japan all rights reserved.

24

サーバープロセスの特徴⚫Webサーバーなどのサーバープロセスは、クライアントからのリクエストを待ったり、リクエスト処理を継続するため、実行し続ける必要があります⚫サーバープロセスは、デーモン(守護神の意)とも呼ばれます
サーバー起動プロセス生成••ユーザー or システ
ムがsystemctl実行•

カーネルがプロセスにリソース割り当て
サーバープロセス起動

プロセス実行を継続•

プロセスのデーモン化© LPI-Japan all rights reserved.

25

サーバープロセスの特徴⚫プロセスを実行する端末を持ちません(psコマンドのTTYは?)⚫コマンド名に、daemonの『d』がつくことが多い傾向（httpd、sshd など）
Webサーバーのapacheの例© LPI-Japan all rights reserved.

26

systemctlによるサーバー制御⚫CentOS7以降ではsystemctlコマンドによるサーバー制御が一般的です
書式

systemctl[サブコマンド]

サブコマンド[サービス名]説明start

サービスを起動stop

サービスを停止

restart

サービスを再起動

statusサービスの状態を表示© LPI-Japan all rights reserved.

27

Webサーバーの起動とプロセス確認# systemctl start httpd（httpdを起動）# systemctl status httpd（httpdの状態を確認）● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since 水 2022-04-20 11:20:55 JST; 7s ago
httpdが起動状態
Docs: man:httpd(8)man:apachectl(8)httpdhttpdMain PID: 95170 (httpd)
親プロセス
親プロセスStatus: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service-95170 /usr/sbin/httpd -DFOREGROUND-95171 /usr/sbin/httpd -DFOREGROUND-95172 /usr/sbin/httpd -DFOREGROUND
httpd-95173 /usr/sbin/httpd -DFOREGROUND
子プロセス-95174 /usr/sbin/httpd -DFOREGROUND-95175 /usr/sbin/httpd -DFOREGROUND
4月 20 11:20:55 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
4月 20 11:20:55 localhost.localdomain httpd[95170]: AH00558: httpd: Could not reliably determine the server's...sage
4月 20 11:20:55 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

© LPI-Japan all rights reserved.

28

Webサーバーの起動とプロセス確認# ps aux | head -1 && ps auxf | grep httpd（httpdプロセスが存在することを確認）
USER
root
root
apacheapacheapacheapacheapachePID %CPU %MEM
VSZ
95202 0.0 0.0 112824
95170 0.1 0.2 224084
95171 0.0 0.1 224084
95172 0.0 0.1 224084
95173 0.0 0.1 224084
95174 0.0 0.1 224084
95175 0.0 0.1 224084

RSS TTY
972 pts/15052 ?
2936 ?
2936 ?
2936 ?
2936 ?
2936 ?

STAT STARTS+ 11:21
Ss
11:20
S
11:20
S
11:20
S
11:20
S
11:20
S
11:20

TIME COMMAND
0:00¥_ grep --color=auto httpd0:00 /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND

httpdのプロセスが存在している# systemctl stop httpd（httpdを停止）# systemctl status httpd（httpdの状態を確認）● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)Docs: man:httpd(8)man:apachectl(8) httpdが停止状態# ps aux | head -1 && ps auxf | grep httpd（httpdプロセスが存在しないことを確認）
USER
root

PID %CPU %MEM
VSZ
95219 0.0 0.0 112824

RSS TTY
968 pts/1

STAT START
S+
11:26

TIME COMMAND
0:00¥_ grep --color=auto httpd

httpdのプロセスが存在しない© LPI-Japan all rights reserved.

29

（検証事例）Webサーバーのプロセス所有者確認（検証事例）
Webサーバーのプロセス所有者確認• Webサーバーの起動とプロセスの所有者確認• apacheユーザーの確認• テストページ作成と確認• 検証から分かること© LPI-Japan all rights reserved.

30

Webサーバーの起動とプロセスの所有者確認# systemctl start httpd（httpdを起動）# systemctl status httpd（httpdの状態を確認）# ps aux | head -1 && ps auxf | grep httpd（httpdプロセスが存在することを確認）
USER
root
root
apacheapacheapacheapacheapachePID %CPU %MEM
VSZ
95202 0.0 0.0 112824
95170 0.1 0.2 224084
95171 0.0 0.1 224084
95172 0.0 0.1 224084
95173 0.0 0.1 224084
95174 0.0 0.1 224084
95175 0.0 0.1 224084

RSS TTY
972 pts/15052 ?
2936 ?
2936 ?
2936 ?
2936 ?
2936 ?

STAT STARTS+ 11:21
Ss
11:20
S
11:20
S
11:20
S
11:20
S
11:20
S
11:20

TIME COMMAND
0:00¥_ grep --color=auto httpd0:00 /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND
0:00 ¥_ /usr/sbin/httpd -DFOREGROUND

httpdのプロセスの所有者
はapacheユーザー© LPI-Japan all rights reserved.

31

apacheユーザーの確認# grep apache /etc/passwd（apacheユーザーの存在を確認）
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin# grep apache /etc/httpd/conf/httpd.conf | grep -v '#' （http.confにてapacheユーザー、グループで動作することを確認）
User apacheGroup apache© LPI-Japan all rights reserved.

32

テストページ作成と確認# cd /var/www/html（カレントディレクトリを/var/www/html[Webサイトのトップページ]に移動）# pwd（カレントディレクトリを確認）/var/www/html# echo 'This is test page for linuc level 1' > index.html（echoでテストページindex.htmlを作成）# cat index.html（index.htmlの確認）
This is test page for linuc level 1# ls -l index.html(apacheプロセスは第3者の権限でファイルを読むことができる)→テストページ見える-rw-r--r--. 1 root root 36

4月 20 14:03 index.html# chmod o-r index.html(index.htmlの第3者のread権限を外す)# ls -l index.html(apacheプロセスは第3者の権限でファイルを読むことができない)→テストページ見えない-rw-r-----. 1 root root 36

4月 20 14:03 index.html# chown apache index.html(index.htmlの所有者をapacheにする)# ls -l index.html(apacheプロセスは所有者のためファイルを読むことができる)→テストページ見える-rw-r-----. 1 apache root 36

4月 20 14:03 index.html© LPI-Japan all rights reserved.

33検証から分かること⚫サーバープロセスの所有者を確認しておく⚫サーバー設定ファイル（apacheはhttpd.conf）⚫プロセス動作ユーザーの確認(/etc/passwd)⚫psコマンドのUSER確認⚫パーミッション(権限)エラーが起きた場合⚫ファイル、ディレクトリの所有者、パーミッションとプロセスの所有者の一致を確認© LPI-Japan all rights reserved.

34

まとめ
⚫プロセスを理解することがLinuxサーバーの理解につながります⚫見えないことをコマンドを使って見える化していきましょう⚫ご清聴ありがとうございました© LPI-Japan all rights reserved.

35

<補足>LinuC試験範囲のプロセス関連のコマンド
カテゴリ

プロセス表示プロセス制御

コマンド

使用例

説明

psps aux

プロセスの一覧表示※pstreepstree -p

プロセスの親子関係をツリー状に表示

pgrep <プロセス名>

pgrep httpd

引数の拡張正規表現でマッチしたプロセスIDを検索

top

top

CPU、メモリ、プロセスの情報表示

kill <プロセスID>

kill 1234

引数で指定したプロセスIDのプロセスを制御（デフォルトは停止）※killall <プロセス名>

killall httpd

引数で指定したプロセス名に完全一致したプロセ
スを全て制御（デフォルトは停止）

pkill <プロセス名>

pkill httpd

引数の拡張正規表現でマッチしたプロセスを全て制御（デフォルトは停止）※pstreeとkillallが使用できない場合、CentOS7では以下のコマンドでインストール
yum install -y psmisc© LPI-Japan all rights reserved.

36

<補足>topコマンドでのプロセス
top – CPU、メモリ、プロセスの使用状況を一覧できる

CPU

メモリ

プロセス

© LPI-Japan all rights reserved.

37

<参考>他OSでのプロセス表示① Windows-タスクマネージャー⚫Windowsではプロセスをタスクマネージャーで表示します© LPI-Japan all rights reserved.

38

<参考>他OSでのプロセス表示② macOS-アクティビティモニタ⚫macOSではアクティビティモニタで表示します© LPI-Japan all rights reserved.

39