rm /* やってしまった
やってしまいました。
rm ${HOGE}/*
HOGEが未定義のため、ルートディレクトリのファイルが全削除。 幸い、rfオプションは付けていなかったので、消されたのはファイルのみ。
CentOS7において、ルートディレクトリに存在するファイルは以下のシンボリックリンク。
- /bin -> /usr/bin
- /lib -> /usr/lib
- /lib64 -> /usr/lib64
- /sbin/ -> /usr/sbin
組み込み系のコマンドしかまともに動作せず、/usr/bin
フォルダに移動してコマンドを実行しても
-bash: /usr/bin/ln: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter:
となってしまう...
なんとかググって見つけた以下のサイト
# /usr/lib64/ld-linux-x86-64.so.2 --library-path /usr/lib64 /usr/bin/ln -s /usr/lib64 /lib64 # /usr/bin/ln -s /usr/bin /bin # ln -s /usr/lib /lib # ln -s /usr/lib64 /lib64 # ln -s /usr/sbin /sbin
上記コマンドで復旧した。神!! 感謝!!! 死ぬほど焦った...
今覚えば、/usr/bin/busyboxを使えばよかったのかもしれない。
ちなみに、shebangにて
#!/bin/bash -eu
とやっていたのだが、該当ファイルを/bin/bashの引数で呼び出したので効いていなかった...
shebangではなく本文中にset -eu
と書くことが大事だと、死ぬほど理解した.