/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

dfコマンドでプロンプトが返ってこない(無反応)な場合の原因

サーバの容量やマウントポイントを確認するためのコマンド 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を保存しているファイルを手動で削除
  • 再度マウントを実施

で直りました。

結構力技でなおしている感ありますね。正しい直し方をご存知の方、突っ込んでもらえればと思います。

それではー。