web-dev-qa-db-ja.com

systemdの実行ツリーを確認する方法はありますか?

私が質問の下で何を意味するか:systemdが指定されたユニットのセットを実行した方法を確認するために順序付きリストをダンプする方法はありますか(つまり、依存関係が解決され、ジョブが実行のためにキューに入れられた後のツリー) ? systemdの状態データを分析することで実行できることを知っていますが、そのようなツリーをすばやく確認する方法はありますか?これは、障害の調査に非常に役立ちます(たとえば、ブートプロセスが一部のユニットでスタックしていることがわかった場合は、より詳細な調査のためのおおよその場所を特定できます。

67
galaxy

systemd-analyze あなたの友だちです。例えば ​​systemd-analyze critical-chainデーモンのブロッキングツリーを出力します。私の例:

graphical.target @20.211s
└─multi-user.target @20.211s
  └─nginx.service @19.348s +862ms
    └─network.target @19.347s
      └─NetworkManager.service @10.315s +9.031s
        └─basic.target @10.312s
          └─timers.target @10.311s
            └─systemd-tmpfiles-clean.timer @10.311s
              └─sysinit.target @10.295s
                └─systemd-update-utmp.service @10.167s +127ms
                  └─systemd-tmpfiles-setup.service @10.124s +41ms
                    └─local-fs.target @10.097s
                      └─home-entd-Downloads.mount @10.093s +2ms
                        └─home.mount @9.326s +672ms
                          └─[email protected] @8.472s +696ms
                            └─dev-sda6.device @8.471s

例のNetworkManagerは基本的に起動全体を保持しています。

より詳細なビューが必要な場合は、実行チェーン全体をsvgファイルにレンダリングできます。 systemd-analyze plot > something.svgチェーン全体(120以上のモジュール)を進行状況バーとして高解像度のsvgファイルに出力します。このファイルには、ブロックされている状態や別の問題がある状態が表示されます。

最後にsystemd-analyze dot階層全体を出力するドットファイルを出力するツール:systemd-analyze dot | dot -Tpng -o stuff.pngドットツールを使用すると、psおよびsvgファイルとしても出力できます。

上記のツールはすべてsystemd-analyzeツールに組み込まれており、少なくともデフォルトでarchlinuxのsystemdに付属しています。それを扱っているサードパーティのプロジェクトもいくつかあると思います。

79
IBr

質問が適切に理解されているかどうかはわかりませんが、次のコマンドでツリーを視覚化できます。

Sudo systemctl status

そしてまた:

Sudo systemctl list-dependencies 

お役に立てれば :)

また、systemctl symlinksフォルダーのツリーを構築すると、他の目的にも役立つ場合があります。

tree /etc/systemd/system

システムの起動を遅くしている古い/バグのあるユニットを特定し、後でsystemctl disableコマンド。

編集

とは言っても、この基本的な機能はグラフィカルツールではなくコマンドラインツールを介して提供する必要があるというOPに本当に同意します... Xを起動できない場合はどうなりますか?次に、svgファイルをどのように処理しますか?

実は道があります。 scp(sshツール)を使用して別のコンピューターでファイルをフェッチできない場合は、fbiが実際に役立つことがあります:)

Sudo systemd-analyze plot > /home/user/startup.svg
fbi /home/user/startup.svg

私のTTYで働いていました。矢印の付いた画像内を移動するだけです。ズームオプションがあります。一覧を表示するにはfbi -h

繰り返しますが、これがお役に立てば幸いです。 ArchlinuxとUbuntuリポジトリで利用できます。

編集2:

fbiはsshでは機能しません。このようにX転送を行うことができますssh -Y user@server、ただしリモートサーバー上で実行されているXサーバーが必要です。

ここでの最善の策は、sshfsを使用することです。これは、たとえばnautilusを使用するなど、ユーザー空間で非常に機能します。やるべき設定が少しあります。以下を参照してください:

Sudo vim /etc/Fuse.conf #type a, uncomment the user_allow_other line and ESC :wq
Sudo mkdir /mnt/yourmountingdir
Sudo chown user:user /mnt/yourmountingdir
sshfs [email protected]:/home/user /mnt/yourmountingdir/ -o allow_other #Asks for Host trusting and password
Sudo fusermount -u /mnt/yourmountingdir/ #To disconnect and unmount
18
Joel.O

あなたの質問にまだ完全には答えていないかもしれませんが、--fuzzオプション

systemd-analyze critical-chain --fuzz 1h

Unit sを指定してcritical-chainを表示することもできるので、multi-user.target

systemd-analyze critical-chain network.target local-fs.target

お役に立てれば

14
Ludovic Ronsin