在linux中,当一个正在运行的程序的可执行文件被修改或删除时会发生什么?

Che*_*eng 13 linux process kernel

假设/usr/local/bin/ruby在后台运行,然后我们ruby用不同的版本覆盖,甚至删除ruby

那些运行 ruby​​ 进程会发生什么?

Kei*_*thB 11

这完全取决于可执行文件的更新方式。如果打开同一个文件并更改其中的一部分,则会发生不好的事情。如果它被删除,则该文件将从文件系统的目录结构中删除,但实际上不会取消链接(即删除),直到最后一个打开它的进程执行它退出。因此,如果删除可执行文件并在其位置写入一个具有相同名称的新可执行文件,则旧的应该继续正常工作。


Pho*_*shi 5

他们会继续前进。如果他们尝试访问自己并收到完全错误的信息,可能会严重崩溃。除非迫不得已,否则我不会这样做:)