Shoeisha Technology Media

資格Zine(しかくジン)

記事種別から探す

【LPICレベル1】弱点「systemdによるサービスとターゲットの制御」を克服する

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 最近の主要なLinuxディストリビューションでは、従来使われてきたSysVinit(SystemV init) に代わり、「systemd」が採用されています。今回はSysVinitと対比しながら、systemdによるサービスとターゲットを制御する方法を解説します。 システム管理者にとってサービスの管理とSysVinitのランレベルに相当するターゲットの管理は必須の作業の1つですが、LPIC レベル1でもVer4.0の試験範囲として「主題101システムアーキテクチャ」の中の重要度3に指定された項目にsystemdによる「ブート手順」と「ブートターゲットの変更」が含まれており、試験対策としてしっかり理解しておかなければなりません。

systemdとは

systemdは、LinuxなどのUNIX系OSで長く使用されてきたSysVinitに代わる仕組みで、ソケットとD-BUSを利用することにより並列処理の機能を強化し、依存関係を定義してサービスを管理します。systemdはLennart Poettering氏によって開発され、2010年にリリースされました。

最近の主要なディストリビューションでは、SysVinitあるいはUpstartに代わり、systemd が採用されています[1][2]

主要なディストリビューションのsystemd
ディストリビューション リリース日 systemdのバージョン
CentOS 7 2014年6月 208
SUSE Linux Enterprise Server 12 2014年10月 210
Fedora 21 2014年12月 217
Ubuntu 15.04 2015年4月 219

[1]: systemdはそのバージョンによってsystemctlのサブコマンドなど、提供する機能に若干の違いがあります。

[2]: FedoraではFedora15以降でsystemdを採用しています。

systemdの中核となるデーモン/usr/lib/systemd/systemdは、SysVinitの/sbin/initと同じくカーネルから起動される最初のユーザプロセスであり、PIDには1が割り当てられます。なお、/sbin/initは、/usr/lib/systemd/systemdへのシンボリックリンクとなっています。

実行例:CentOS 7でプロセスIDとリンクを確認
$ ps -e |head -2
  PID TTY          TIME CMD
    1 ?        00:00:40 systemd  ← systemdのPIDは1

$ ls -l /sbin/init  ← initはsystemdへのシンボリックリンク
lrwxrwxrwx. 1 root root 22  4月 17 13:55 /sbin/init -> ../lib/systemd/systemd

systemdはユニット(unit)によってシステムを管理します。ユニットにはmount、service、targetなど12のタイプがあります。

主なユニット
ユニット 説明
mount ハードウェア、ストレージデバイスのマウント
service サービス
target ターゲット。SysVinitのランレベルに相当

各ユニットは/usr/lib/systemdディレクトリと/etc/systemdディレクトリの下のファイルで管理されますが、ファイルを直接編集することなく、systemctlコマンドによって設定や表示などほとんどすべての管理ができます。

systemctlコマンドの構文
systemctl [ オプション ] サブコマンド [ unit名 ]
systemctlコマンドの主なオプション
主なオプション 説明
-a, –all ストップしているunitも含めてロード(load)されているunitをすべて表示する
-l, –full unit名などを省略しないで表示する
-t, –type= unitの一覧表示の場合、表示するunitのタイプを指定する【例:-t target, -t service】
–no-pager ページャを使用しない
systemctlコマンドのサブコマンド
主なサブコマンド 説明
start unitをスタートする
restart unitをリスタートする
stop unitをストップする
status unitの状態を表示する
enable unitをenableにする。これによりシステム起動時にunitは自動的にスタートする
disable unitをdisableにする。これによりシステム起動時にunitはスタートしない
isolate unitおよび依存するunitをスタートし、他のunitはすべてストップする。現在のtargetを変更する場合に使用する
list-units activeなunitをすべて表示表示する。このサブコマンドはデフォルト
list-unit-files インストールされているunitをすべて表示する
cat unit設定ファイルの内容を表示する(バージョン209から)。【実行例:systemctlcat sshd】

systemdによるサービスの管理

systemctlコマンドにより、サービスの起動、停止、再起動、状態の表示ができます。またシステム起動時のサービスの自動起動のオン/オフの切り替えができます。

systemdとSysVinitのサービスの管理(RedHat系の場合)
サービスの管理 systemd SysVinit
起動 systemctl start サービス名 service サービス名 start
停止 systemctl stop サービス名 service サービス名 stop
再起動 systemctl restart サービス名 service サービス名 restart
状態表示 systemctl status サービス名 service サービス名 status
自動起動オン systemctl enable サービス名 chkconfig サービス名 on
自動起動オフ systemctl disable サービス名 chkconfig サービス名 off
設定表示 systemctl status サービス名 chkconfig –list サービス名
実行例:httpd.serviceの状態表示、スタート、ストップ
# systemctl status httpd.service ← httpdサービスの状態を表示
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled) ← disable になっている
   Active: inactive (dead) ← inactive (プロセスは起動していない)
......(以下省略)......

# systemctl start httpd.service ← httpdサービスをスタート
# systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled) ← disable になっている
   Active: active (running) since 水 2015-04-22 19:35:27 JST; 4s ago ← active (プロセスは起動)
 Main PID: 30454 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─30454 /usr/sbin/httpd -DFOREGROUND
           ├─30455 /usr/sbin/httpd -DFOREGROUND
           ├─30456 /usr/sbin/httpd -DFOREGROUND
           ├─30457 /usr/sbin/httpd -DFOREGROUND
           ├─30458 /usr/sbin/httpd -DFOREGROUND
           └─30459 /usr/sbin/httpd -DFOREGROUND
......(以下省略)......

# systemctl enable httpd.service ← enableに設定
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

サービスを指定する場合には、サービス名.service.serviceを省略できます。例えば、上記のhttpd.serviceであれば、httpdと指定して実行することできます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 大竹 龍史(有限会社ナレッジデザイン)(オオタケ リュウシ)

    有限会社ナレッジデザイン 代表取締役。

    1986年 伊藤忠データシステム(現・伊藤忠テクノソリューションズ(株))入社後、Sun Microsystems社のSunUNIX 3.x、SunOS 4.x、Solaris 2.xを皮切りにOSを中心としたサポートと社内トレーニングを担当。

    1998年 (有)ナレッジデザイン設立。Linux、Solarisの講師および、LPI対応コースの開発/実施。約27年にわたり、OS の中核部分のコンポーネントを中心に、UNIX/Solaris、Linuxなどオペレーティングシステムの研修を主に担当。最近はOpenStack関連の検証とドキュメント作成に注力。

    著書に『Linux教科書 LPIC レベル1 スピードマスター問題集』(共著、翔泳社刊)、『Linux教科書 LPIC レベル2 スピードマスター問題集』(翔泳社刊)。月刊誌『日経Linux』(日経BP社刊)およびWebメディア『@IT自分戦略研究所』(ITmedia)でLPIC対策記事を連載。

バックナンバー

連載:ドラゴン大竹のLPICレベル1 弱点克服クラス(Ver 4対応)

この記事もオススメ

All contents copyright © 2015-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.0