GNU/Linux >> Linux の 問題 >  >> Linux

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

解決策 1:

systemd-analyze はあなたの友達です。例:systemd-analyze critical-chain デーモンのブロッキング ツリーを出力します。たとえば、Mine:

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 dot ツールを使用すると、ps および svg ファイルとしても出力できます。

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

解決策 2:

質問を正しく理解しているかどうかわかりませんが、次のコマンドで利用できるツリーの視覚化があります:

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 では動作しません。この ssh -Y [email protected] のように X 転送を行うことができます 、ただし、リモート サーバーで 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

解決策 3:

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

systemd-analyze critical-chain --fuzz 1h

単位も指定できることに注意してください 彼らのクリティカルチェーンを見るために 、したがって、multi-user.target に限定されません

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

これが役に立てば幸いです


Linux
  1. Systemdユニットファイルを入れますか?

  2. systemd-analyze:コマンドが見つかりません

  3. mv が存在しない場合に、移動先のディレクトリを作成する方法はありますか?

  1. 列ごとに「ユニーク」にする方法はありますか?

  2. シェルで最後に実行されたコマンドの実行時間を見つける方法はありますか?

  3. Linux の TTY コンソールで使用される色を変更する方法はありますか?

  1. 不良ブロックを再起動する方法はありますか?

  2. htopでテキストをコピーする方法はありますか?

  3. Linux - ソフトウェアでメモリの速度を特定する方法はありますか?