Jika saya memulai proses dan kemudian menghapus binernya, saya masih dapat memulihkannya dari /proc/<pid>/exe
:
$ cp `which sleep` .
$ ./sleep 10m &
[1] 13728
$ rm sleep
$ readlink /proc/13728/exe
/tmp/sleep (deleted)
$ cp /proc/13728/exe ./sleep-copy
$ diff sleep-copy `which sleep` && echo not different
not different
$ stat /proc/13728/exe
File: ‘/proc/13728/exe’ -> ‘/tmp/sleep (deleted)’
Size: 0 Blocks: 0 IO Block: 1024 symbolic link
Di sisi lain, jika saya membuat tautan simbolis sendiri, hapus target dan coba salin:
cp: cannot stat ‘sleep’: No such file or directory
/proc
adalah antarmuka ke kernel. Jadi apakah tautan simbolis ini sebenarnya menunjuk ke salinan yang dimuat dalam memori, tetapi dengan nama yang lebih berguna? Bagaimana cara exe
kerja tautan, tepatnya?
proc_exe_link()
dalam sistemproc
file: lxr.free-electrons.com/source/fs/proc/base.c?v=4.0#L1350