LoginSignup
2
4

More than 5 years have passed since last update.

CentOS7 システム管理

Last updated at Posted at 2018-11-11

システム起動の流れ
 ①BIOS/UEFI ⇒ ②ブートローダ ⇒ ③カーネル ⇒ ④init/systemd
起動時のログ確認
 dmesg

①BIOS/UEFI
OSの起動やPCと接続機器間の入出力を制御するプログラム
②ブートローダ
 HDDなどのストレージからOSを読み込んで起動するプログラム
③カーネル
 OSの中核プログラム

④init⇒systemd

・initの仕組み
1./etc/inittab ファイル読み込み
2./etc/rc.sysinit スクリプト読み込み
3./etc/rc スクリプト実行
4./etc/rcスクリプトが「/etc/rc$ランレベル.d」ディレクトリ以下のスクリプトを実行

・initの欠点
- デーモンやアプリケーション数が増えると、管理や制御が複雑になり、
- initから起動される各種デーモンやアプリケーションは、並列処理が行われず、数が増えるとOS起動速度が遅くなる
- 何らかの理由でプロセスの親子関係が崩れた場合に、子プロセスがinitプロセスの直接管理下に置かれるものの、子プロセスの挙動を適切に制御できない

・systemdの仕組み
処理をUnitという単位で管理
  Unitとは
   1.スクリプトではなく設定ファイルであり、Unitの設定をもとにSystemdが処理実行
   2.Unit同士の関係を定義可能(例:AにはBが必要と定義すると、最適な起動順で起動)
   3.用途別にいろんな種類がある
     - .service プロセスの起動/停止に関する設定
     - .mount ファイルシステムのマウント/アンマウントに関する設定
     - .target Unitをグループにしてまとめたもの
 Unitは「/usr/lib/systemd/system(インストール時の初期設定)」と「/etc/systemd/system(ユーザー個別設定)」にあり、両方に同じファイル名が存在する場合は「/etc/systemd/system」ディレクトリ配下の設定ファイルが優先される
 そのため、ユーザー独自のパラメータを指定したい場合は、「/etc/systemd/system/httpd.service/d」ディレクトリを作成し、配下に設定ファイルを作成する

1.systemd起動
2.default.targetの探索
3.Unitの関係を解析
4.プロセスの並列起動

・Systemdのメリット
- アプリケーション側で起動・停止にかかるスクリプトの用意不要
- 各種サービスのプロセス群を並列実行可能
- プロセスをグループ化する「cgroup」という仕組みを使用して、プロセスの親子関係を管理しており、initよりも制御をより適切に行える

<コマンド例>
サービスの状態確認(例:httpd)
systemctl status httpd
サービスの起動(例:httpd)
systemctl start httpd
サービスの停止(例:httpd)
systemctl stop httpd
OS起動時にサービス自動起動設定(例:httpd)
systemctl enable httpd
OS起動時にサービス自動起動設定削除(例:httpd)
systemctl disable httpd
OS起動時にサービス自動起動設定確認(例:httpd)
systemctl -t service is-enable httpd

runlevel⇒target

・runlebel
RHEL系だと0~6まである
0 : 停止
1 : シングルユーザー
2 : 未使用/ユーザー定義可能
3 : マルチユーザー、コンソールログインのみ
4 :未使用/ユーザー定義可能
5 : ランレベル3 + Xディスプレイマネージャ起動
6 : リブート
※シングルユーザーモード ネットワーク機能を起動しなく、rootでのみログイン可能なモード

・target
複数のサービス(デーモン)などの制御対象をグループにし、まとめたもの
例:network.target=ネットワークに関する処理の単位をグループ化したもの

<コマンド例>
デフォルトのtargetの確認
systemctl get-default
利用可能なtargetの確認
systemctl list-units --type=target --all --no-pager
デフォルトのtarget変更(graphical.targetへの変更例)
systemctl set-default graphical.target
従来のrunlebelとtargetとの関係確認
ls -l /lib/systemd/system/runlevel*target
システムブート時のサービス起動設定確認(これでrunlevel1ではNW起動されないのが確認可能)
chkconfig --list
OS再起動無しでtarget切り替え
systemctl isolate multi-user.target
runlevel確認(出力:変更前runlevel 現在runlevel)
runlevel

2
4
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
2
4