สมมติว่า OP หมายถึงจาก RAMจริง ๆและไม่ใช่วิธีที่เป็นไปได้และสมมติว่ากระบวนการที่สคริปต์ถูกดำเนินการมีขีด จำกัด ไฟล์หลักเป็นศูนย์ (ซึ่งโดยปกติแล้วจะเป็นการตั้งค่าเริ่มต้นcat /proc/PID/limits
) จากนั้นคุณต้องแนบกับกระบวนการและ ตั้งค่าขีด จำกัด หลักให้มีค่ามากพอที่จะรวมอิมเมจกระบวนการและใช้สัญญาณ ABRT เพื่อสร้างไฟล์แกนหรือใช้เครื่องมือเช่นgdb
ที่สามารถแนบกับกระบวนการและสร้างอิมเมจหลักของกระบวนการจาก RAM
- ติดตั้ง
gdb
ในเชลล์บางตัวที่มีความเป็นเจ้าของเหมือนกับสคริปต์ที่รันอยู่หรือความเป็นเจ้าของรูท:
- ทำ
ps ax
เพื่อค้นหา id กระบวนการ (PID)
gdb -p PID
โปรดทราบว่าสิ่งนี้จะหยุดกระบวนการดำเนินการไม่ให้ดำเนินการต่อ แต่ไม่ลบออกจากตารางกระบวนการ
- ใน gdb ออกคำสั่ง
generate-core-file
gdb ควรแก้ไขด้วยสิ่งที่คล้ายSaved corefile core.15113
กันโดยสมมติว่า PID คือ 15113
- ใน gdb ออกคำสั่ง
detach
สคริปต์ของคุณจะทำงานต่อ (ทำงานต่อ)
- ใน gdb ออกคำสั่ง
quit
- ในเปลือกรัน
strings core.15113 > my_script.sh
เปิดmy_script.sh
ในตัวแก้ไขบางอย่าง ข้อความสคริปต์ของคุณควรตรงส่วนท้ายของไฟล์ก่อนส่วนของสภาพแวดล้อม ใช้โปรแกรมแก้ไขเพื่อขูดส่วนก่อนและหลังสคริปต์
ทดสอบโซลูชันนี้กับสคริปต์อื่นก่อนที่จะใช้กับสคริปต์รางวัลของคุณ YMMV
ลำดับดูเหมือนดังนี้:
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:~$