• 締切済み

/usrのパーティション変更後、whichコマンドを利用できない。

「df -h」で「/usr」にマウントした「/dev/sda7」の使用率が83%・空き容量500MBになっていたため、新しいパーティション「/dev/sda11」を「/usr」にマウントしたいと思ってます。 「/dev/sda11」をとりあえず「/tmp/usrcp」にマウントし「/usr」ディレクトリ下のファイルをすべて「/tmp/usrcp」にコピーしました。コマンドは「#cp -r /usr /tmp/usrcp」です。root権限で作業しています。 「/usr」と「/tmp/usrcp」からデバイスファイルをアンマウントし「/usr」に「/dev/sda11」をマウントしました。 「df -h」で確認すると「/usr」に「/dev/sda7」がマウントされていた時の使用量は2.6G、「/dev/sda11」がマウントされた時の使用量は2.4Gです。 「/dev/sda11」がマウントされた場合は、「vi」「df」「ls」は利用できますが「which」を利用できません:「No such file...」。「/dev/sda7」がマウントされた場合は「which」を利用できます。 「/dev/sda11」がマウントされた場合に「ls /usr」を実行すると「/usr」以下のファイルが表示されません。 *「/dev/sda7」のアンマウントは「使用中」ですというエラーが表示されたため、「umount -l」で行いました。 長い文になりましたが、どこを改善すればwhichコマンドを正常に利用できるようになるのかご指導下さい。よろしくお願いします。

みんなの回答

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.6

ハードリンク/シンボリックリンク/保護モード、を正しくコピーする必要があります。 cpコマンドよりは、tarとかdump、あるいはcpioを使うべきでしょう。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

>コマンドは「#cp -r /usr /tmp/usrcp」です。root権限で作業しています。 上記だと/tmp/usrcpディレクトリのusrというディレクトリが作成されそのディレクトリの下に/usrディレクトリ配下のファイル等がコピーされると思いますよ。 また、cp -prだとリンクファイル(シンボリックリンク/ハードリンク)がリンクファイルとしてではなくリンク先の実体がコピーされ、その内容でファイルが作成されると思います。 リンクファイルをリンクファイルとしてコピーしたいなら、No.1の方のtarコマンドとかNo.2の方のdump/restoreを使用された方がいいですよ。 >「/dev/sda11」がマウントされた場合に「ls /usr」を実行すると「/usr」以下のファイルが表示されません。 usrというディレクトリが見えていたりしませんか? もしそうなら、正常なら/usr/bin/xxxで見えているコマンドが実際には/usr/usr/bin/xxxで見えている事になります。 リンクファイルの事もあるので再度/usr配下をtar or dump/restore でコピーした方がいいと思いますが、現状でどうにかしたいなら、 # cd /usr/usr # mv * .. # cd .. # rmdir usr とかはどうですか?

回答No.4

「/usr/bin」か「/usr/sbin」があるかどうか、 さらに中にファイルが入っているかどうか確認していただけますか? whichコマンドは上記ディレクトリーを参照しているので、 もしなければ「No such file...」みたいなエラーはでると 思います。もう一度ちゃんとコピーできていたか確認したほうが いいのではないでしょうか。

  • mtfoggy
  • ベストアンサー率14% (37/255)
回答No.3

>コマンドは「#cp -r /usr /tmp/usrcp」です。 /usr/usr/bin/which になっているのでは?

回答No.2

私はそのような状況ならdump/restoreを使います。 # cd /tmp/usrcp # dump 0f - /dev/sda7 | restore xf - みたいな感じで。(オプションはmanで調べて適切なものを使ってください)

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

/usr を tar でまとめて、新しい /usr に展開すれば大丈夫なように思います。