web-dev-qa-db-ja.com

トップ1.23データファイルから完全なコマンドラインを抽出できますか?

私の本番サーバーには atop バージョン1.23があり、プロセスの完全なコマンドラインを抽出する必要があるデータファイルがあります。

残念ながら:

  • このバージョンのatopは、ディスプレイの80列目以降のデータを表示しません
  • 水平スクロールは1.27でのみ導入されました
  • 新しいバージョンは、古いバージョンで書き込まれたデータファイルの読み取りを拒否します
  • ファイル自体が圧縮されているため、単純なstrings検索は機能しません

データファイルから完全なコマンドラインを回復する方法はありますか?

6
Flup

編集。 manページを確認すると、次のコマンドラインで完全なコマンドラインを取得できるようです。

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 -uncompressqpdf の一部)の代替には、openssl zlib -dpigz -zdが含まれます。

8

新しいバージョンでは、インタラクティブコマンド-cがあり、プロセスのコマンドラインとその引数を表示します。

これを行うには、トップログの場所(例:/var/log/atop/atop_20191209)を見つけ、次のように-rスイッチを使用してトップに提供します。atop -r /var/log/atop/atop_20191209次にを押します。 t 時間を進めるために。時間を巻き戻すには、を押すことができます Shift+t

2
ildar