Giả sử rằng OP thực sự có nghĩa là từ RAM chứ không phải bất kỳ cách nào có thể , và giả sử rằng quá trình thực thi tập lệnh có giới hạn tệp không có lõi (thường là cài đặt mặc định cat /proc/PID/limits
), thì bạn cần phải đính kèm vào quy trình và đặt giới hạn lõi thành một giá trị đủ lớn để bao gồm hình ảnh quá trình và sử dụng tín hiệu ABRT để tạo tệp lõi hoặc sử dụng một công cụ như gdb
có thể đính kèm vào một quy trình và tạo hình ảnh cốt lõi của quá trình từ RAM.
- Tải về
gdb
Trong một số shell có quyền sở hữu tương tự như tập lệnh đang chạy hoặc quyền sở hữu gốc:
- Làm
ps ax
để tìm id quá trình (PID)
gdb -p PID
Lưu ý rằng điều này sẽ ngăn quá trình thực thi quy trình tiếp tục nhưng không xóa nó khỏi bảng quy trình.
- Trong gdb, ban hành lệnh
generate-core-file
gdb nên repond với một cái gì đó như Saved corefile core.15113
, giả sử rằng PID là 15113.
- Trong gdb, ban hành lệnh
detach
Kịch bản của bạn sẽ tiếp tục (tiếp tục) chạy.
- Trong gdb, ban hành lệnh
quit
- Trong vỏ, chạy
strings core.15113 > my_script.sh
Mở my_script.sh
trong một số trình soạn thảo. Văn bản tập lệnh của bạn phải ở cuối tập tin trước phần môi trường. Sử dụng trình chỉnh sửa để loại bỏ các phần trước và sau tập lệnh.
Kiểm tra giải pháp này trên một tập lệnh khác trước khi bạn sử dụng nó trên tập lệnh giải thưởng của mình. YMMV.
Trình tự trông như thế này:
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:~$