サーバの容量やマウントポイントを確認するためのコマンド df。暇さえあればlsとdfはコマンド打っているぐらい、常用しているコマンドです。
そのdfコマンド。
時々、プロンプトが返ってこない場合があります。
Ctrl + cで抜けれるのですが、いかんせん容量を確認しようと思っても出来なくて困ってしまいます。
そんなときの直し方。
なぜコマンド結果がかえってこなくなるのか?
推測の域を出ないですが、自分がよく遭遇するのはマウントポイント先が容量オーバーなときです。
特殊な使い方かもしれないですが、BoxというストレージサービスをWebストレージとしてLinuxにmountして使っています。
そのマウント先のboxの容量が満タンになっているときはプロンプトが返ってきません。
直し方
試行錯誤の結果、直すことが出来ました。チャレンジした内容を順番に記載しておきます。
アンマウント
とりあえず、マウントしているので、アンマウントしてみます。
vagrant@vagrant-ubuntu-trusty-32:~/bin$ umount /mnt/web_storage umount: /mnt/web_storage is not in the fstab (and you are not root) vagrant@vagrant-ubuntu-trusty-32:~/bin$ sudo umount /mnt/web_storage
・・・・・コマンドが終了しません。
ってことで強制的にCtrl + cで抜けます。
結果:umountコマンドはコマンドが終了しない。
プロセスを強制Kill
次に試したのは、プロセスを強制的にKillして、そして再度マウントしてみる方法。
psでPIDを調べます。
$ ps -eaf | grep mount davfs2 2805 1 0 Oct13 ? 00:33:54 /sbin/mount.davfs https://dav.box.com/dav /mnt/web_storage -o rw uid=1000 gid=1000
そして見つけたPID(2805)をKillします。
$ sudo kill -9 2805
プロセスが居なくなったことを確認。
そして再度マウントしてみます。(マウントポイントは/mnt/web_storage)
$ ./mount.sh /sbin/mount.davfs: mount point /mnt/web_storage does not exist
※ mountするシェルを作って実施しています。
んん?!マウントポイントが見つからないというエラー・・・・・・umountしたときに消えちゃったかな?
ってことで再度ディレクトリを作成。
$ mkdir /mnt/web_storage mkdir: cannot create directory ‘/mnt/web_storage’: File exists
んんん?!存在する・・・・だと?
何がなんだかわからないのでどうなっているのかを見てみることに。
vagrant@vagrant-ubuntu-trusty-32:~/bin$ cd /mnt vagrant@vagrant-ubuntu-trusty-32:/mnt$ ls ls: cannot access web_storage: Transport endpoint is not connected box2 web_storage vagrant@vagrant-ubuntu-trusty-32:/mnt$
「Transport endpoint is not connected」って変なエラーが出てきた。転送先にアクセスできないって言ってるなぁ・・・・。もう一度umountしてみる。
vagrant@vagrant-ubuntu-trusty-32:/mnt$ umount -l /mnt/web_storage umount: /mnt/web_storage is not in the fstab (and you are not root) vagrant@vagrant-ubuntu-trusty-32:/mnt$ sudo umount -l /mnt/web_storage /sbin/umount.davfs: can't find mount.davfs-process with pid 2805; trying to unmount anyway. you propably have to remove /var/run/mount.davfs/mnt-web_storage.pid manually
PIDの情報を保存したファイルが残っているからうまく動かない様子。ってかこんなコメントが出てくるんだ。なかなか親切。
ってことでそのファイルの存在を確認して、削除してしまいます。
vagrant@vagrant-ubuntu-trusty-32:/mnt$ ls /var/run/mount.davfs/* /var/run/mount.davfs/mnt-web_storage.pid vagrant@vagrant-ubuntu-trusty-32:/mnt$ rm /var/run/mount.davfs/mnt-web_storage.pid rm: remove write-protected regular file ‘/var/run/mount.davfs/mnt-web_storage.pid’? y rm: cannot remove ‘/var/run/mount.davfs/mnt-web_storage.pid’: Permission denied vagrant@vagrant-ubuntu-trusty-32:/mnt$ sudo rm /var/run/mount.davfs/mnt-web_storage.pid
そして改めてmountを実施。
$ ./mount.sh
今度はちゃんとコマンドが終了しました。
では改めてdfを実施。
vagrant@vagrant-ubuntu-trusty-32:~/bin$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 40G 19G 19G 50% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 245M 12K 245M 1% /dev tmpfs 50M 356K 50M 1% /run none 5.0M 0 5.0M 0% /run/lock none 248M 0 248M 0% /run/shm none 100M 0 100M 0% /run/user vagrant 195G 136G 60G 70% /vagrant https://dav.box.com/dav 50G 48G 2.3G 96% /mnt/web_storage vagrant@vagrant-ubuntu-trusty-32:~/bin$
正常にマウントできました。
まとめ
手順をまとめると、
- mountのプロセスをkillする
- PIDを保存しているファイルを手動で削除
- 再度マウントを実施
で直りました。
結構力技でなおしている感ありますね。正しい直し方をご存知の方、突っ込んでもらえればと思います。
それではー。