rm -rfフォルダーを試したところ、「デバイスまたはリソースがビジー」になりました。
Windowsでは、LockHunterを使用してこれを解決していました。同等のLinuxとは何ですか?(のような方法ではなく、完全な記事「このアンロック」の単純な答えとして与えてください、このいずれかを。彼らは便利だが、私は現在、ちょうどASimpleMethodThatWorks™に興味を)
rm -rf /... / bin / rmを含むすべてのファイルを喜んで削除します。
rm -rfフォルダーを試したところ、「デバイスまたはリソースがビジー」になりました。
Windowsでは、LockHunterを使用してこれを解決していました。同等のLinuxとは何ですか?(のような方法ではなく、完全な記事「このアンロック」の単純な答えとして与えてください、このいずれかを。彼らは便利だが、私は現在、ちょうどASimpleMethodThatWorks™に興味を)
rm -rf /... / bin / rmを含むすべてのファイルを喜んで削除します。
回答:
必要なツールはlsof、開いているファイルのリストの略です。
多くのオプションがあるので、manページを確認してください。ただし、ディレクトリの下にあるすべての開いているファイルを表示する場合は、次のようにします。
lsof +D /path
これはの下のファイルシステムを再帰処理する/pathため、大きなディレクトリツリーで実行することに注意してください。
どのプロセスがファイルを開いているかがわかったら、それらのアプリを終了するか、kill(1)コマンドでそれらを強制終了できます。
/pathいるかどうかを確認します。これは、隠しファイルを開く原因の1つです。
lsof私のために何もしないようです:lsof storage/logs/laravel.log何も返さなかったので、そうしましたlsof +D storage/logs/。umountと答えたnot mounted。
mount | grep <path>ます。これは、/dev/<abc>にマウントされている可能性があることを示してい<path>ます。を使用sudo umount -lf /dev/<abc>してからを削除してください<path>。私のために働く。ありがとう@camh
マウントの問題の結果である場合があるため、削除しようとしているファイルシステムまたはディレクトリをアンマウントします。
umount / path
私fuserはこの種のものに使用します。マウント内でファイルを使用しているプロセスをリストします。
fuserファイルシステムをアンマウントしたい特定の場合にのみ役立ちます。ここでの問題は、特定のファイルを使用しているものを見つけることです。
fuserディレクトリツリー内のすべての開いているファイルを見つけることが問題であるため、ここでは役に立ちません。lsofすべてのファイルとフィルターを表示するか、再帰するように指示できます。fuserそのようなモードはなく、すべてのファイルで呼び出す必要があります。
fuser作品リスト。試してみてくださいfuser /var/log/*。開いているログがある場合、どのログを誰が開いているかがわかります。単純なワイルドカードが機能しない場合は、機能のfind有無にかかわらず機能しxargsます。
lsofがあった間に私のパスになかったfuserので、殺すために問題のあるプロセスIDを見つけることができたので、+ 1 +ありがとう。
解決策は次のとおりです。
ls -a.xyzファイルが見つかりますvi .xyz ファイルの内容を調べますps -ef | grep usernamekill -9 job_ids -job_idsは、対応するエラーの2番目の列の値で、8番目の列のコンテンツ私はこれと同じ問題を抱えており、@ camhの推奨で始まるワンライナーを作成しました。
lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9
awkコマンドは、PIDSをつかみます。このtailコマンドは、厄介な最初のエントリ「PID」を取り除きます。私-9はキルで使用しましたが、他の人はより安全なオプションを持っているかもしれません。
自動テストでramdiskを作成したときに、この問題が発生しました。他の回答で提案されたコマンド、lsofおよびfuserは役に立たなかった。テストの後、アンマウントしてからフォルダーを削除しようとしました。私はそれを取り除くことができなかったので、私は本当に長い間混乱していました-私は「デバイスまたはリソースがビジー状態」になり続けました!
偶然、私はラムディスクを取り除く方法を見つけました。mountコマンドを実行した回数と同じ回数アンマウントする必要がありました。つまり、
sudo umount path
自動テストを使用して作成されたため、何度もマウントされたため、テスト後に一度アンマウントするだけでは削除できませんでした。そのため、何度も手動でアンマウントした後、最終的に再び通常のフォルダーになり、削除できました。
うまくいけば、これがこの問題に出くわした他の誰かを助けることができます!
NFSネットワークファイルシステムを持つサーバーでこれを頻繁に経験します。ファイルは通常のように名前が付けられているため、ファイルシステムと関係があると思われます.nfs000000123089abcxyz。
私の典型的な解決策は、ファイルの親ディレクトリの名前を変更または移動し、1〜2日後に戻ってくると、ファイルが自動的に削除され、その時点でディレクトリを削除できることです。
これは通常、ソフトウェアライブラリをインストールまたはコンパイルしているディレクトリで発生します。
サーバーにアクセスできる場合は、お試しください
そのディレクトリをサーバーから削除する
または、umountを実行して再度マウントしumount -lます。通常のumountで問題が発生した場合は、lazy umountを試してください。
私もこの問題を抱えていました
lsof +D path :出力なし
ps -ef :関連情報はありません