:::: MENU ::::

Systemdの使い方 基本編


こんにちは。SovaのPOPです。

CentOS7がついにリリースされました!今回は早かったですね。
早速使ってみた方はすぐに感じたかと思いますが、CentOS6の頃と違って色々と変更点があります。

まず最初に戸惑うのはSystemdじゃないでしょうか?
こちらは2011年5月頃にリリースされたFedora15から先行で導入されており、Fedoraを使っている人にはおなじみになっているものの、今回触るのが初めてという方も多いのではないでしょうか?

Systemdはかなり色々なことをしているのですが、一番目立つのはサービスの管理でしょう。
以前まではSysVinitという仕組みで成り立っており、例えばchkconfigコマンドをよく使っていたかと思いますが、chkconfigは使わなくなります!
代わりに登場するのは
“systemctl”
というコマンド

なお、Systemdではユニットという単位で管理します。

さて、簡単に使い方をまとめてみます。まず覚えるべきは以下のコマンドです。
(※今回の記事は自宅のサーバFedora19ベースで書いています。
 CentOS7はまだ触れていません、、変わっていたらすみません。)

systemctl –all ・・すべてのユニットの状態表示
例えばhttpd、vsftpdについて、こんな感じのものが出力されます。
httpd.service loaded active running The Apache HTTP Server
vsftpd.service loaded inactive dead Vsftpd ftp daemon
httpdは起動状態、vsftpdは停止状態なのがわかるかと思います。

systemctl start [○○.service] ・・ユニット起動
systemctl start httpd.service
これでhttpdが起動します。

systemctl stop [○○.service] ・・ユニット停止

systemctl status [○○.service] ・・ユニット状態確認
こちらはこんな感じのものが出力されます。
[root@** ~]# systemctl status httpd.service
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since 土 2014-05-31 09:47:09 JST; 1 months 8 days ago
Main PID: 2205 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: name=systemd:/system/httpd.service
├─ 357 /usr/sbin/httpd -DFOREGROUND
├─ 391 /usr/sbin/httpd -DFOREGROUND
├─ 542 /usr/sbin/httpd -DFOREGROUND
├─ 579 /usr/sbin/httpd -DFOREGROUND
├─ 601 /usr/sbin/httpd -DFOREGROUND
├─ 707 /usr/sbin/httpd -DFOREGROUND
├─ 764 /usr/sbin/httpd -DFOREGROUND
├─ 2205 /usr/sbin/httpd -DFOREGROUND
├─ 4167 /usr/sbin/httpd -DFOREGROUND
├─30459 /usr/sbin/httpd -DFOREGROUND
└─30464 /usr/sbin/httpd -DFOREGROUND
6月 29 03:12:18 *** systemd[1]: Reloaded The Apache HTTP Server.
7月 06 03:11:18 *** systemd[1]: Reloading The Apache HTTP Server.
7月 06 03:11:18 *** httpd[30443]: [Sun Jul 06 03:11:18.113135 2014] [so:warn] [pid 30443] AH01574: module rewrite_module is already loaded, skipping
7月 06 03:11:18 *** systemd[1]: Reloaded The Apache HTTP Server.

ステータス以外にも、CGroupの情報まで出ていますね。ほか、起動停止等のログも出ています。

systemctl restart [○○.service] ・・ユニット再起動

systemctl enable [○○.service] ・・ユニット自動起動設定
こちらはこんな出力がされます。
[root@*** ~]# systemctl enable vsftpd.service
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'

裏でやっていることはコマンドを見ればわかるかと思いますが、詳しくは後ほど説明します。

systemctl disable [○○.service] ・・ユニット自動起動設定解除
こちらはこんな出力です
[root@*** ~]# systemctl disable vsftpd.service
rm '/etc/systemd/system/multi-user.target.wants/vsftpd.service'

まずこれらを覚えておけば、基本的な設定については問題ないでしょう。

さて、以前の使い方に慣れている人はランレベルどこに行った?と思っているかもしれません。
Systemdではランレベルは存在しません!(それに似たものは存在します。)

ユニット自動起動設定で出てきたメッセージについて、見てみましょう。
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
/etc/systemd/system/multi-user.target.wants/の配下にvsftpdのシンボリックリンクを張っていることがわかるかと思います。

以前はrc3.dの配下などにシンボリックリンクを作っていましたが、Systemdからは上記のパスにシンボリックリンクを作成すると自動起動ができるようになります。

ちなみにmulti-user.target.wantsは以前のランレベル3相当です。ランレベル5相当のものにgraphical.target.wantsというものがあったりします。
色々あるので、興味のある人は/etc/systemd/system/の配下を覗いてみるといいかと思います。
/etc/systemd/system/multi-user.target.wants/をlsで覗けば、何が自動起動設定になっているかわかりますね。

さて、今回はこのへんで。Systemdを扱うには他にも必要な知識はあるので、近々まとめたいと思います。
あとはiptablesに代わって登場した、Firewalldについても近々まとめたいと思います。


So, what do you think ?