我只是想知道为什么在所有 Linux 机器中, lsb_release 需要更长的时间来打印一些有关发行版的信息,
任何人都可以启发我这个事实吗?请。
答案1
打印几个字节并不是困难的部分。困难的部分是找到应该打印哪些字节。为此,lsb_release
需要分析许多系统文件。您可以通过跟踪其系统调用来了解它在 I/O 上花费的时间:
strace -f -tt -T -o lsb_release.strace lsb_release
在我的机器上,大约 1/3 的时间花在执行命令上
dpkg-query -f '${Version} ${Provides}\n' -W lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-languages lsb-multimedia lsb-printing lsb-security
它会解析已安装软件包的数据库。没有其他重要的 I/O 消耗者。
由于这是一个 Python 脚本,您还可以使用 Python 分析器了解它把时间花在哪里:
python -m cProfile
这对我来说并不是很有启发,消费者最大的时间与脚本的初始化(它确实使用了相当多的库)和子流程的调用有关dpkg
。