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

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

ただいまの
回答率

90.52%

  • systemd

    29questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 6,325

redlinux1015

score 21

[概要]
設計書を書くにあたり、以前の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でした。

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

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なら次のように実行します。

systemctl status crond.service


(2/27追記)

systemdの基本的な概念や使いかたは、Red Hatの次の資料に解説されていますので、ひと通り読んでみて下さい。SysV initスクリプトとSystemdを比較して違いを説明しています。

読んでみて、わからないことがあれば、あらためてご質問下さい。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/27 10: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)になる?)。

    キャンセル

  • 2017/02/27 12:23 編集

    回答に資料を追記しました。

    ①systemctlでdisableやenableを設定します。chkconfigでonやoffするのと似ています。
    ②緑がenabled、赤がdisabledです。

    なお、SysV initとsystemdとはまったく同じ動作をするわけではありません。ですからご質問の「以前のchkconfig --list にて確認していたフォーマットに合わせて」という条件が具体的にどのようなことを意味するのかは、当方ではわかりません。その作業を指示した方にご確認いただくほかないと思います。

    キャンセル

  • 2017/02/28 12: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の結果を信頼した方がよさそうです。

    キャンセル

  • 2017/02/28 12:29

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

    キャンセル

  • 2017/03/01 18:00

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

    キャンセル

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • systemd

    29questions

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