MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


Linux systemd
profile-img
投稿者: fujioka090...さん
投稿日:2023/04/11 14:17
更新日:2023/04/11 14:18
like-img
分類
技術
テクノロジー
Unix系サーバ
キャリア
運用・保守
投稿内容

今回はsystemd及びsystemctlコマンドについて説明します。

以前別の記事にてinitの説明に付随してSysVinitというシステム起動の仕組みについても説明しました。

今回のsystemdはSysVinitよりも新しく、現在主流で使用されている仕組みとなります。

systemdの機能についてはかなりの項目量が有るので、細かい説明は省略し、どのような機能やコマンド、仕組みの違いが有るのかについて説明しようと思います。

SysVinitに対してsystemdが仕組みとしてどのような違いがあるのかを下記に示します。


①一番最初に起動されるプロセスがinitからsystemdとなっている。なのでPID1のプロセスがsystemd。

②SysVinitはプロセス一つ一つを順番に処理していくが、systemdは依存関係等を考慮しつつ同時並列に処理していくことができるため、起動が早い。

③systemdは「Unit」と呼ばれる単位で処理を分割している。(詳細は後で説明)


上記③の「Unit」についてですが、様々な種類が有るので下記に一覧を示します。


Unit一覧

service・・・各種サービスを起動。

device・・・各種デバイスを表示する。

mount・・・ファイルシステムをマウントする。(/etc/fstabより自動作成)

swap・・・スワップ領域を有効にする。(/etc/fstabより自動作成)

target・・・複数のユニットをグループ化する。

socket・・・特定のソケットを監視し、接続があるとサービスを起動する。

timer・・・サービスの起動を予約する。


SysVinitにおけるランレベルに相当するのが「target」になります。

例えばランレベル3は「multi-user.target」、ランレベル5は「graphical.target」となります。

ランレベル0~6がどの「target」が該当するのか、一覧を下記に示します。


ランレベル0→poweroff.target・・・システム終了

ランレベル1→rescue.target・・・シングルユーザーモード

ランレベル2、3、4→multi-user.target・・・マルチユーザーモード

ランレベル5→graphical.target・・・グラフィカルログインモード

ランレベル6→reboot.target・・・再起動


次にsystemdにてサービスの起動や設定、ターゲットの変更等を行うための「systemctl」コマンドについて説明していきます。

「systemctl」コマンドの書式、サブコマンド、オプションを下記に示します。


systemctl サブコマンド [Unit名] [オプション]


サブコマンド一覧

start・・・Unitを起動

stop・・・Unitを停止

restart・・・Unitを再起動

status・・・Unitの状態表示

enable・・・Unitを自動起動するようにする

disable・・・Unitを自動起動しないようにする

is-active・・・Unitの起動状態を確認する

kill・・・Unitへシグナルを送信する

list-units・・・起動中のUnitをすべて表示

reboot・・・再起動

poweroff・・・システム終了

get-default・・・最初に起動する「target」設定を確認する

set-default target名・・・最初に起動する「target」設定を設定する

isolate・・・現在の「target」を変更する


オプション

--type 種類・・・Unitの種類を指定

--all・・・Unitを全表示(起動しているかどうか関係無く)

--no-pager・・・ページャを使って表示しない(systemctlはデフォルトでページャで表示)


サービスやデーモンプロセスの自動起動設定や「target」の初期設定変更等、様々な設定変更を行うために「systemctl」コマンドは必須なので覚えておいた方が良いです。

例えばApccheのUnitである「httpd.service」を起動するのであれば「systemctl start httpd」と入力・実行すれば起動できます。

また、現在の「target」を「graphical.target」へ変更したいのであれば「systemctl isolate graphical.target」と入力・実行すればグラフィカルログインモードになります。

今回は「systemd」や「systemctl」の基本的な説明をさせていただきました。


参考資料

・中島能和(2020)『CentOS 徹底入門 第4版』株式会社翔泳社

「Systemd」を理解する ーシステム起動編ー | ギークを目指して (equj65.net)

Systemd入門(1) - Unitの概念を理解する - めもめも (hatenablog.com)

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3