GNU/Linux >> Linux の 問題 >  >> Linux

実行中の bash スクリプトの内容を RAM から取得することは可能ですか?

/proc/$PID/fd を見てください。そこには、スクリプト自体を含む、プロセスによって開かれたすべてのファイル記述子が必要です。ただ 09 回復するのに十分なはずです。


OP が本当に RAM から を意味していたと仮定すると、 可能な方法ではありません 、スクリプトが実行されたプロセスのコア ファイル制限がゼロであると仮定します (通常、これはデフォルト設定であり、13 です)。 )、プロセスにアタッチし、プロセス イメージを含めるのに十分な大きさの値にコア制限を設定し、ABRT シグナルを使用してコア ファイルを生成するか、21 プロセスにアタッチし、RAM からプロセスのコア イメージを生成できます。

<オール>
  • 39 をインストール
  • 実行中のスクリプトまたはルート所有権と同じ所有権を持つシェル:

    1. 42 を行う プロセス ID (PID) を見つける
    2. 54

    これにより、プロセスの実行が停止されますが、プロセス テーブルからは削除されないことに注意してください。

    1. gdb で、コマンド 61 を発行します。

    gdb は 70 のような応答を返します。 、PID が 15113 であると仮定します。

    1. gdb で、コマンド 88 を発行します。

    スクリプトは実行を継続 (再開) します。

    1. gdb で、コマンド 95 を発行します。
    2. シェルで 101 を実行します

    115 を開く いくつかのエディターで。スクリプト テキストは、環境セクションの前のファイルの末尾に配置する必要があります。エディターを使用して、スクリプトの前後のセクションを削り取ります。

    プライズ スクリプトで使用する前に、別のスクリプトでこのソリューションをテストしてください。 YMMV.

    シーケンスは次のようになります:

    [email protected]:~$ gdb -p 15113
    GNU gdb (GDB) 7.4.1-debian
    Copyright (C) 2012 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Attaching to process 15113
    Reading symbols from /bin/bash...(no debugging symbols found)...done.
    Reading symbols from /lib/x86_64-linux-gnu/libtinfo.so.5...(no debugging symbols found)...done.
    Loaded symbols for /lib/x86_64-linux-gnu/libtinfo.so.5
    Reading symbols from /lib/x86_64-linux-gnu/libdl.so.2...(no debugging symbols found)...done.
    Loaded symbols for /lib/x86_64-linux-gnu/libdl.so.2
    Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...(no debugging symbols found)...done.
    Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6
    Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
    Loaded symbols for /lib64/ld-linux-x86-64.so.2
    0x00007feaf4b4c7be in waitpid () from /lib/x86_64-linux-gnu/libc.so.6
    (gdb) generate-core-file
    Saved corefile core.15113
    (gdb) detach
    Detaching from program: /bin/bash, process 15113
    (gdb) quit
    [email protected]:~$ 
    

    Linux
    1. bashスクリプトが同時に実行されないようにする

    2. ソフトウェアがインストールされているかどうかを(スクリプトから)検出する最良の方法は?

    3. Linux bashでphpスクリプト(php関数)を実行する

    1. URLからbashスクリプトを実行

    2. ランチャーからルートとして Pycharm を実行する

    3. フォルダーから最も古いファイルを削除する Bash スクリプト

    1. Bashスクリプトがエイリアスを認識しないのはなぜですか?

    2. 組み込みコマンドをbashするためにstraceすることは可能ですか?

    3. フォルダから最も古いファイルを削除するためのBashスクリプト?