「デバイスまたはリソースがビジー」を乗り越える方法


229

rm -rfフォルダーを試したところ、「デバイスまたはリソースがビジー」になりました。

Windowsでは、LockHunterを使用してこれを解決していました。同等のLinuxとは何ですか?(のような方法ではなく、完全な記事「このアンロック」の単純な答えとして与えてください、このいずれかを。彼らは便利だが、私は現在、ちょうどASimpleMethodThatWorks™に興味を)


5
これが便利だったおかげで-LinuxからWindowsに来ていて、lsofに相当するものを探していました-LockHunter。
ソニアハミルトン

3
なんてこったい?Unixは、Windowsのように開いているファイルを削除することを妨げませ。これが、実行することによってシステム全体を削除できる理由ですrm -rf /... / bin / rmを含むすべてのファイルを喜んで削除します。
psusi

1
@psusi、それは間違っています。悪い情報源を持っているか、単に物を作っているだけです。Linuxは、Windowsと同様に、ファイルとデバイスをロックします。しかし、それはちょっと壊れています。0pointer.de/blog/projects/locking.html-foobarbecue 15
1

1
@foobarbecue、通常、これらは単なる助言的なロックであり、少なくともマンページは、リンク解除ではなく、読み取り/書き込み専用であることを示しているようです。
-psusi

回答:


232

必要なツールはlsof開いているファイルのリストのです

多くのオプションがあるので、manページを確認してください。ただし、ディレクトリの下にあるすべての開いているファイルを表示する場合は、次のようにします。

lsof +D /path

これはの下のファイルシステムを再帰処理する/pathため、大きなディレクトリツリーで実行することに注意してください。

どのプロセスがファイルを開いているかがわかったら、それらのアプリを終了するか、kill(1)コマンドでそれらを強制終了できます。


46
結果がなかったらどうしますか?
海兵隊14

22
@marines:別のファイルシステムがの​​下にマウントされて/pathいるかどうかを確認します。これは、隠しファイルを開く原因の1つです。
CAMH

2
パスへの直接のlsofコマンドは機能しません。したがって、基本的にパスの場所に移動してからlsof busy_fileを実行し、すべてのプロセスを強制終了する必要があります
-J4cK

4
lsof私のために何もしないようです:lsof storage/logs/laravel.log何も返さなかったので、そうしましたlsof +D storage/logs/umountと答えたnot mounted
ライアン

1
@camhの答えを詳しく説明します:を使用しmount | grep <path>ます。これは、/dev/<abc>にマウントされている可能性があることを示してい<path>ます。を使用sudo umount -lf /dev/<abc>してからを削除してください<path>。私のために働く。ありがとう@camh
ヴィカスGoelさん

107

マウントの問題の結果である場合があるため、削除しようとしているファイルシステムまたはディレクトリをアンマウントします。

umount / path


5
4分の1から4です。ありがとう、あなたは私の夜を救った。形〔人や映画などが〕とても面白い、人を笑わせる〔パーティーなどが〕大はしゃぎの、愉快に騒ぐ〔人が〕大喜びの、陽気な。単一行-非常に無駄な時間-.- '
-Aiyion.Prime

1
私の問題は、ログディレクトリはは/ dev /マッパー/ VG00-ルートとしてマウントされた
Spikolynn

1
ワインダーでの同様のジャムから抜け出すのを助けてくれました。
ジョン

1
私の場合、Jenkinsはタスクの中止後にchrootディレクトリをアンマウントしませんでした
zarkone

1
私の場合、ubuntuデスクトップでアンマウントできました!! サンクス-JRichardsz 18
1

14

fuserはこの種のものに使用します。マウント内でファイルを使用しているプロセスをリストします。


fuserファイルシステムをアンマウントしたい特定の場合にのみ役立ちます。ここでの問題は、特定のファイルを使用しているものを見つけることです。
ジル

@Gilles:ファイルでも機能します。
BillThor

申し訳ありませんが、間違った異議:fuserディレクトリツリー内のすべての開いているファイルを見つけることが問題であるため、ここでは役に立ちません。lsofすべてのファイルとフィルターを表示するか、再帰するように指示できます。fuserそのようなモードはなく、すべてのファイルで呼び出す必要があります。
ジル

@Giles:fuser作品リスト。試してみてくださいfuser /var/log/*。開いているログがある場合、どのログを誰が開いているかがわかります。単純なワイルドカードが機能しない場合は、機能のfind有無にかかわらず機能しxargsます。
-BillThor

1
lsofがあった間に私のパスになかったfuserので、殺すために問題のあるプロセスIDを見つけることができたので、+ 1 +ありがとう。
-stevesliva

12

解決策は次のとおりです。

  1. ディレクトリに移動して入力します ls -a
  2. .xyzファイルが見つかります
  3. vi .xyz ファイルの内容を調べます
  4. ps -ef | grep username
  5. 8列目(最後の行)に.xyzコンテンツが表示されます。
  6. kill -9 job_ids -job_idsは、対応するエラーの2番目の列の値で、8番目の列のコンテンツ
  7. 次に、フォルダーまたはファイルを削除してみます。

4
これらの神秘的なファイルがどこから来たのかを知ることは興味深いでしょう。
ジョンWHスミス14

9

私はこれと同じ問題を抱えており、@ camhの推奨で始まるワンライナーを作成しました。

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

awkコマンドは、PIDSをつかみます。このtailコマンドは、厄介な最初のエントリ「PID」を取り除きます。私-9はキルで使用しましたが、他の人はより安全なオプションを持っているかもしれません。


1
それはより普遍的にするために、あなたは、現在のディレクトリの代わりに、ログ/のために使用することができます./
user2589273

良い点、@ user2589273。更新しました。
チョイルトンB.ヒギンボトム

5

自動テストでramdiskを作成したときに、この問題が発生しました。他の回答で提案されたコマンド、lsofおよびfuserは役に立たなかった。テストの後、アンマウントしてからフォルダーを削除しようとしました。私はそれを取り除くことができなかったので、私は本当に長い間混乱していました-私は「デバイスまたはリソースがビジー状態」になり続けました!

偶然、私はラムディスクを取り除く方法を見つけました。mountコマンドを実行した回数と同じ回数アンマウントする必要がありました。つまり、 sudo umount path

自動テストを使用して作成されたため、何度もマウントされたため、テスト後に一度アンマウントするだけでは削除できませんでした。そのため、何度も手動でアンマウントした後、最終的に再び通常のフォルダーになり、削除できました。

うまくいけば、これがこの問題に出くわした他の誰かを助けることができます!


5

NFSネットワークファイルシステムを持つサーバーでこれを頻繁に経験します。ファイルは通常のように名前が付けられているため、ファイルシステムと関係があると思われます.nfs000000123089abcxyz

私の典型的な解決策は、ファイルの親ディレクトリの名前を変更または移動し、1〜2日後に戻ってくると、ファイルが自動的に削除され、その時点でディレクトリを削除できることです。

これは通常、ソフトウェアライブラリをインストールまたはコンパイルしているディレクトリで発生します。


4

上記のPrabhatの質問を取り除いて、encfsプロセスを取り残したときにmacos high sierraでこの問題が発生し、再起動すると解決しましたが、これは

ps -ef | grep name-of-busy-dir

プロセスとPIDを表示しました(2列目)。

sudo kill -15 pid-here

それを修正しました。


これも私にとってはうまくいきました。なに-15
O.rka

3

サーバーにアクセスできる場合は、お試しください

そのディレクトリをサーバーから削除する

または、umountを実行して再度マウントumount -lます。通常のumountで問題が発生した場合は、lazy umountを試してください。

私もこの問題を抱えていました

lsof +D path :出力なし

ps -ef :関連情報はありません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.