AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 617398
Accepted
galaxy
galaxy
Asked: 2014-08-03 02:10:44 +0800 CST2014-08-03 02:10:44 +0800 CST 2014-08-03 02:10:44 +0800 CST

有没有办法查看systemd的执行树?

  • 772

我在这个问题下的意思是:有没有办法转储有序列表(就像 pstree 对进程所做的那样)以查看 systemd 如何执行提供的一组单元,即在解决依赖关系并且作业排队等待执行之后的树? 我知道你可以通过分析 systemd 状态数据来做到这一点,但是有没有一种快速的方法来查看这样的树?这将对故障调查有很大帮助(例如,如果您发现引导过程卡在某个单元上,您将能够确定大致位置以进行更深入的调查。

linux
  • 3 3 个回答
  • 139288 Views

3 个回答

  • Voted
  1. Best Answer
    IBr
    2014-08-05T10:57:54+08:002014-08-05T10:57:54+08:00

    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。我认为也有一些第 3 方项目在处理它。

    • 123
  2. Joel.O
    2017-02-14T05:02:22+08:002017-02-14T05:02:22+08:00

    不确定我是否正确理解了这个问题,但可以使用以下命令进行树形可视化:

    sudo systemctl status
    

    并且 :

    sudo systemctl list-dependencies 
    

    希望这可以帮助 :)

    此外,构建 systemctl 符号链接文件夹的树可能对其他目的有用:

    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
    
    • 28
  3. Ludovic Ronsin
    2015-10-23T15:30:54+08:002015-10-23T15:30:54+08:00

    可能仍未完全回答您的问题,但请尝试使用--fuzz选项

    systemd-analyze critical-chain --fuzz 1h
    

    请注意,您还可以指定 unit来查看它们的critical -chain,因此您不仅限于multi-user.target

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

    希望这可以帮助

    • 14

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve