Help us understand the problem. What is going on with this article?

CentOS7 システム管理

More than 1 year has passed since last update.

システム起動の流れ
 ①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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away