TL; DR下部にあります。
背景:
CentOS6.10本番サーバーで次のことが発生しました。私はブラウザベースのターミナルプログラムを使用して、コンソールベースのファイルエクスプローラであるプログラムMidnight Commanderを実行していました。残念ながら、この端末でのマウスサポートは正しく設定されておらず、_/usr/bin
_フォルダー内のいくつかのファイルに誤ってmv
操作を適用しました。実行可能ファイルは別のディレクトリに移動されました。ファイルを_/usr/bin
_に戻すことはできましたが、確実に復元したかったのです。
壊れたファイルのテスト:
移動された実行可能なプログラムの1つは、まだ実行中のプログラムです。それは_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*
_
ファイルを元に戻すことで、損傷を元に戻すことができると期待していました。しかし、コマンドは期待される結果を返していません。
TL; DR私の質問は次のとおりです。実行可能ファイルを_/usr/bin/
_から移動した場合、問題なく元に戻すことはできますか?そうでない場合は、マシンを安全に再起動できるようにするために他に何ができますか?
proc
がバイナリをdeleted
と見なす理由は、ファイルシステムからバイナリを移動したためです。ボリューム内で移動した場合は、proc
に新しいパスが表示されます。
あなたが見るのは、そのような変化の後の通常の状況です。何か問題があるという意味ではありません。すべてが正しいという意味ではありません...しかし、おそらくそうです。