Supondo que o OP realmente significasse a partir da RAM e de nenhuma maneira possível , e assumindo que o processo em que o script foi executado tenha um limite de zero de arquivo principal (que geralmente é a configuração padrão cat /proc/PID/limits
), você precisará se conectar ao processo e defina o limite do núcleo como um valor grande o suficiente para incluir a imagem do processo e use o sinal ABRT para gerar o arquivo principal ou use uma ferramenta gdb
que possa ser conectada a um processo e gerar uma imagem principal do processo a partir da RAM.
- Instalar
gdb
Em alguns shell com a mesma propriedade do script em execução ou da propriedade raiz:
- Fazer
ps ax
para encontrar o ID do processo (PID)
gdb -p PID
Observe que isso impedirá a execução do processo de continuar, mas não a removerá da tabela de processos.
- No gdb, emita o comando
generate-core-file
O gdb deve responder com algo como Saved corefile core.15113
, assumindo que o PID seja 15113.
- No gdb, emita o comando
detach
Seu script continuará (continuando) em execução.
- No gdb, emita o comando
quit
- Com casca, execute
strings core.15113 > my_script.sh
Abra o my_script.sh
em algum editor. O texto do seu script deve estar no final do arquivo antes da seção do ambiente. Use o editor para raspar as seções antes e depois do script.
Teste esta solução em outro script antes de usá-la em seu script de prêmio. YMMV.
A sequência é assim:
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:~$