Ele só poderia estar na memória e não ser recuperável, nesse caso você teria que tentar recuperá-lo do sistema de arquivos usando uma dessas ferramentas de recuperação do sistema de arquivos (ou da memória, talvez). No entanto,
$ cat hamlet.c
#include <unistd.h>
int main(void) { while (1) { sleep(9999); } }
$ gcc -o hamlet hamlet.c
$ md5sum hamlet
30558ea86c0eb864e25f5411f2480129 hamlet
$ ./hamlet &
[1] 2137
$ rm hamlet
$ cat /proc/2137/exe > newhamlet
$ md5sum newhamlet
30558ea86c0eb864e25f5411f2480129 newhamlet
$
Com programas interpretados, obter o arquivo de script pode estar em algum lugar entre complicado e impossível, pois /proc/$$/exe
apontará para perl
ou qualquer outra coisa, e o arquivo de entrada pode já ter sido fechado:
$ echo sleep 9999 > x
$ perl x &
[1] 16439
$ rm x
$ readlink /proc/16439/exe
/usr/bin/perl
$ ls /proc/16439/fd
0 1 2
Apenas os descritores de arquivo padrão estão abertos, então x
já foi embora (embora possa existir por algum tempo ainda no sistema de arquivos, e quem sabe o que o interpretador tem na memória).