查找两个 Ubuntu 安装之间的差异

查找两个 Ubuntu 安装之间的差异

我有两台运行 Ubuntu Mate 22.04.3 的计算机。它们的配置应该完全相同。在每台计算机上,我都运行全屏 OpenGL 应用程序。一台机器 xorg 持续使用 ~4% 的 CPU。在另一台机器上,在完全相同的负载下,xorg 使用 20-40% 的 CPU。我正在尝试确定为什么存在差异。

我比较了两个系统上的以下命令:

  • apt 列表--已安装
  • gsettings 列表递归

在两种情况下,系统之间没有差异。

还有哪些工具/文件/文件夹/设置可用于比较两个系统?

谢谢!

答案1

由于找不到其他工具来执行此操作,所以我编写了自己的 Python 脚本。该脚本将扫描文件系统并获取它遇到的每个文件的文件大小和 CRC。输出一个 CSV 文件,其中包含文件名、大小、CRC。然后我使用 Notepad++ 的比较插件来比较每个系统的 CSV 文件。我还没有找到差异的原因,但万一这对其他人有用,下面是脚本:

import sys
from zlib import crc32
from os import walk, stat
from os.path import join
import csv

MB = 1024*1024
size_threshold = MB * 512  # don't bother with files > 512 MB
chunksize = MB * 8  # read in 8 MB chunks

# the folders that will be scanned recursively
accepted_roots = ['/bin', '/boot', '/etc', '/home', '/lib', '/opt', '/sbin', '/usr', '/var']


def get_crc(fname, expected_size):
    c = 0
    with open(fname, 'rb') as source:
        read_size = 0
        while True:
            all = source.read(chunksize)
            read_size += len(all)
            c = crc32(all, c)
            if len(all) != chunksize or read_size >= expected_size:
                break
    return c


if __name__ == "__main__":
    with open(sys.argv[1], 'w', newline='') as csvfile:
        csvwriter = csv.writer(csvfile, dialect='excel')
        csvwriter.writerow(['File', 'Size', 'CRC'])

        for check_root in accepted_roots:
            for (root, dirs, files) in walk(check_root, topdown=True):
                print("Checking: " + root)
                for f in files:
                    fname = join(root, f)
                    try:
                        size = stat(fname).st_size
                        c = -1 if (size == 0 or size > size_threshold) else get_crc(fname, size)
                        csvwriter.writerow([fname, str(size), str(c)])
                    except Exception as ex:
                        print(f'Error with {fname}: {str(ex)}')

相关内容