长话短说在底部。
背景:
我的 CentOS 6.10 生产服务器上发生了以下情况。我使用基于浏览器的终端程序来运行 Midnight Commander 程序,这是一个基于控制台的文件浏览器。不幸的是,该终端上的鼠标支持未正确设置,我无意中mv
对文件夹内的多个文件应用了操作/usr/bin
。可执行文件已移至另一个目录。我能够将文件移回/usr/bin
,但我想确保一切都已恢复。
对损坏的文件进行测试:
已移动的可执行程序之一是仍在运行的程序。它被称为dbus-daemon
。我能够确定这是847
我的机器上的进程。
当我运行时readlink -f /proc/847/exe
,它不会返回任何内容。
ls -l | grep exe
当我在文件夹中运行命令时/proc/847
,我得到
lrwxrwxrwx 1 root root 0 Dec 4 01:01 exe -> \ (deleted)/bin/dbus-daemon
对工作文件进行测试:
我决定将其与不受该mv
操作影响的正常可执行文件进行比较。我选择chrond
看看是否得到相同的结果。是我机器上的chrond
进程。1187
当我运行时readlink -f /proc/1187/exe
,它返回/usr/sbin/crond
ls -l | grep exe
当我在文件夹中 运行命令时/proc/1187/
,我得到
lrwxrwxrwx 1 root root 0 Dec 4 01:01 exe -> /usr/sbin/crond*
我希望通过将文件移回原处,可以消除损坏。但命令没有返回预期结果。
长话短说我的问题是:如果我将可执行文件移出/usr/bin/
,我可以将其移回而不会出现任何问题吗?如果没有,我还能做些什么来确保我可以安全地重新启动我的机器?
答案1
之所以proc
看到二进制文件,是deleted
因为您已将其移出文件系统。如果您已将其移动到卷内,proc
则会显示新路径。
你看到的就是这样改变后的正常情况。并不意味着有什么问题。也不意味着一切都是正确的……但很可能是这样。