我可以从 atop 1.23 数据文件中提取完整的命令行吗?

我可以从 atop 1.23 数据文件中提取完整的命令行吗?

我的生产服务器有atop版本 1.23,我有一个由它编写的数据文件,我需要从中提取进程的完整命令行。

很遗憾:

  • 此版本atop不会显示超出显示屏第 80 列的数据
  • 水平滚动是在 1.27 中才引入的
  • 新版本拒绝读取旧版本写入的数据文件
  • 文件本身已被压缩,因此简单的strings搜索不起作用

有什么方法可以从我的数据文件中恢复完整的命令行吗?

答案1

编辑。检查手册页后,看起来您可以获得完整的命令行:

atop -r /var/log/atop.log -P PRG

从压缩文件中提取数据的一些通用方法:

我可以使用以下命令从顶级日志文件中提取数据:

xxd -p < /var/log/atop.log |
  fold -w4 |
  awk -v cmd='xxd -r -p | zlib-flate -uncompress | strings' '
    /789c/{if (x) close(cmd); x=1}; x {print | cmd}' |
  grep your-command

这个想法是检测 zlib 标头(以 开头789c)并将其传递给zlib-flate -uncompress。不能保证防弹,也不是最有效的方法,但对我来说很有效。

替代品zlip-flate -uncompress(部分qpdf) 包括openssl zlib -dpigz -zd

答案2

在较新的版本中,有一个交互式命令 -c显示进程的命令行及其参数。

为此,您将找到顶部日志的位置(例如/var/log/atop/atop_20191209),并使用-r开关将其提供给顶部,如下所示:atop -r /var/log/atop/atop_20191209然后按下t以提前时间。要倒回时间,您可以按Shift+ t

相关内容