Dengan asumsi bahwa OP benar-benar berarti dari RAM dan bukan cara yang mungkin , dan dengan asumsi bahwa proses di mana skrip dieksekusi memiliki batas nol file inti (yang biasanya merupakan pengaturan default, cat /proc/PID/limits
), maka Anda perlu melampirkan ke proses dan atur batas inti ke nilai yang cukup besar untuk menyertakan gambar proses dan gunakan sinyal ABRT untuk menghasilkan file inti, atau gunakan alat seperti gdb
yang dapat melampirkan ke proses dan menghasilkan gambar inti dari proses dari RAM.
- Install
gdb
Di beberapa shell dengan kepemilikan yang sama dengan script yang berjalan atau kepemilikan root:
- Lakukan
ps ax
untuk menemukan id proses (PID)
gdb -p PID
Perhatikan bahwa ini akan menghentikan eksekusi proses dari melanjutkan tetapi tidak menghapusnya dari tabel proses.
- Di gdb, jalankan perintah
generate-core-file
gdb harus merespons dengan sesuatu seperti Saved corefile core.15113
, dengan asumsi bahwa PID adalah 15113.
- Di gdb, jalankan perintah
detach
Script Anda akan terus berjalan (melanjutkan).
- Di gdb, jalankan perintah
quit
- Dalam shell, jalankan
strings core.15113 > my_script.sh
Buka my_script.sh
di beberapa editor. Teks skrip Anda harus berada di akhir file sebelum bagian lingkungan. Gunakan editor untuk menghapus bagian sebelum dan sesudah skrip.
Uji solusi ini pada skrip lain sebelum Anda menggunakannya pada skrip hadiah Anda. YMMV.
Urutannya terlihat seperti ini:
yba@tavas:~$ 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
yba@tavas:~$