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 username
kill -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
:関連情報はありません