/proc/$PID/fd を見てください。そこには、スクリプト自体を含む、プロセスによって開かれたすべてのファイル記述子が必要です。ただ 09
回復するのに十分なはずです。
OP が本当に RAM から を意味していたと仮定すると、 可能な方法ではありません 、スクリプトが実行されたプロセスのコア ファイル制限がゼロであると仮定します (通常、これはデフォルト設定であり、13
です)。 )、プロセスにアタッチし、プロセス イメージを含めるのに十分な大きさの値にコア制限を設定し、ABRT シグナルを使用してコア ファイルを生成するか、21などのツールを使用する必要があります。コード> プロセスにアタッチし、RAM からプロセスのコア イメージを生成できます。
39
をインストール 実行中のスクリプトまたはルート所有権と同じ所有権を持つシェル:
42
を行う プロセス ID (PID) を見つける54
これにより、プロセスの実行が停止されますが、プロセス テーブルからは削除されないことに注意してください。
- gdb で、コマンド
61
を発行します。
gdb は 70
のような応答を返します。 、PID が 15113 であると仮定します。
- gdb で、コマンド
88
を発行します。
スクリプトは実行を継続 (再開) します。
- gdb で、コマンド
95
を発行します。 - シェルで
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]:~$