質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Q&A

解決済

2回答

17389閲覧

systemdの起動サービスの確認方法

redlinux1015

総合スコア33

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

0グッド

2クリップ

投稿2017/02/23 11:09

編集2017/02/23 13:40

[概要]
設計書を書くにあたり、以前のchkconfig --list にて確認していたフォーマットに合わせて、targetごとのサービス起動設定をマトリックス表として作成する必要があります。

[環境]
RHEL7.2

[困っていること]
systemdでは/lib/systemd/system配下にあるファイルに起動設定が書いてあると調査の中で理解したのですが、確認方法についてご教示頂きたく投稿しました。

下記が実行したコマンドです。
cd /lib/systemd/system
grep WantedBy=multi-user ./.service
grep WantedBy=graphical.target ./
.service
grep WantedBy=rescue.target ./*.service

multi-userはそれなりにリストが出てきたのですが、graphicalは5行ほどしか出力されず、rescueに至っては0でした。

どのようにしたら、ターゲットごとのサービス起動が確認できますか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

systemdにはランレベルの概念がなく、より細かい「ターゲット」の概念を用います。従来のランレベルに対応するsystemdのターゲットは、大体次の表の通りです。
| ランレベル | ターゲット |
|------------|------------|
| 0 | poweroff.target |
| 1 | rescue.target |
| 2 | multi-user.target |
| 3 | 同上 |
| 4 | 同上 |
| 5 | graphical.target |
| 6 | reboot.target |

たとえば、multi-user.target (従来のランレベル2、3、4に相当) に依存している (従来なら、そのランレベルに達したときに起動される) サービスの一覧を取得するには、次のように実行します。

systemctl list-dependencies multi-user.target

結果のうち「.service」がつくものがサービスと考えてかまいません。各サービスの詳細を知りたければ、たとえばcrond.serviceなら次のように実行します。

投稿2017/02/24 07:45

編集2017/02/27 03:13
ikedas

総合スコア4315

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

redlinux1015

2017/02/27 01:47

ご回答ありがとうございます。 回答を読ませて頂き、自分なりに理解しようと調べていたのですが、しっくりこない部分がありました。 ①結局、systemctl list-unit-filesで表示される結果は何なのか? 調べた限りでは、起動targetに関係なく、systemdが認識しているunitファイルを表示するという理解なのですが、disableやenableというのは何に拠って表示されているのかがわかりません。これだけ、現在のデフォルトターゲットの起動設定が表示されるのでしょうか。 # systemctl list-unit-files UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static ・・・・ abrt-ccpp.service enabled abrt-oops.service enabled abrt-pstoreoops.service disabled abrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled accounts-daemon.service enabled ②以下の考え方で合っているか ・systemctl list-unit-files --type=serviceでサービスの全量を確認 ・systemctl list-dependencies XXXX.tagetでターゲットごとに起動するサービスを確認(赤丸は起動するが停止状態(dead)になる?)。
ikedas

2017/02/27 03:23 編集

回答に資料を追記しました。 ①systemctlでdisableやenableを設定します。chkconfigでonやoffするのと似ています。 ②緑がenabled、赤がdisabledです。 なお、SysV initとsystemdとはまったく同じ動作をするわけではありません。ですからご質問の「以前のchkconfig --list にて確認していたフォーマットに合わせて」という条件が具体的にどのようなことを意味するのかは、当方ではわかりません。その作業を指示した方にご確認いただくほかないと思います。
redlinux1015

2017/02/28 03:15

ご回答ありがとうございます。サービスを縦軸に、targetを横軸にして、それぞれのターゲットについてサービス起動状態をdiableあるいはenableにする、というフォーマットです。 資料を拝見し、runlevelに紐付くtarget以外にも複数targetがあること、それぞれのtargetに対する起動サービスについては単純には導けないことがわかりました。 ひとまずlist dependenciesの結果にてサービスが起動しているものとし、出力結果に載っていないサービスについては”-”で表現することで落ち着きました。 また、ご回答頂いた内容でlist dependenciesのドット表現についてですが、赤丸でもenabledになっているものがありました(ただし、状態はdead)。かと思えばdisabledになっている(ただし、loadされている)ものがありましたので、一概にdisabledであるとは言えないし、disabledだからと言って起動しないとも言えないようです。 enable/disableかは/usr/lib/systemd/system/multi-user.target.wants/にリンクが貼られているかどうかで、起動(load)しているかどうかについては.serviceファイルの設定を読み込むlist-dependenciesの結果を信頼した方がよさそうです。
ikedas

2017/02/28 03:29

たしかに、enabled/disabledとload/deadは対応しませんね。 たとえばデータベースサービスのように他のサービスの前提になっているものだと、他のサービスのユニットでRequiresに指定されているために、enabledになっていなくても起動してくる、といったことがあります。 おっしゃる通り、設定ファイルを解析するよりもsystemctlコマンドの出力を見たほうがいいと思います。
redlinux1015

2017/03/01 09:00

参考になればと思い、追記します。 ネットにある多くのページにはサービスを無効化するには以下を実行、と書いてあります。 systemctl disable [service] しかし、これでは直で起動しなくなっても、他のサービスから起動する場合があります。まさにikedasさんが上記で仰っていることです。 結果的に、systemctl list-dependenciesとsystemctl list-unit-filesに相違が発生します。 完全に無効化するには、以下を実行します。 systemctl mask [service] これで完全にサービスが起動しなくなるようです。 試したところ、systemctl list-dependenciesの結果にも出力されなくなりました。 依存関係があるサービスから起動しようとすると、エラーが起こるかもですが…本当に無効化したければそれも諸共maskですね。
guest

0

systemctl list-dependencies でわかりませんでしょうか。

systemctl list-dependencies multi-user.target systemctl --plain list-dependencies multi-user.target | grep '\.service'

投稿2017/02/23 14:55

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問