私がしようとしました rm -rf
フォルダ、「デバイスまたはリソースがビジー状態」になりました。
Windowsでは、これを解決するためにLockHunterを使用しました。 Linuxの同等機能は何ですか? (答えとして、単純な「ロック解除」メソッドを提供してください。 これ のような完全な記事ではありません。それらは有用ですが、私は現在ASimpleMethodThatWorks™にのみ興味があります)
必要なツールはlsof
で、これはlist open filesを表します。
これには多くのオプションがあるので、manページを確認してください。ただし、ディレクトリの下で開いているすべてのファイルを表示したい場合は、次のようにします。
_lsof +D /path
_
これは_/path
_の下のファイルシステムで再帰的に実行されるため、大きなディレクトリツリーで実行する場合は注意してください。
どのプロセスがファイルを開いているかがわかったら、それらのアプリを終了するか、kill(1)
コマンドを使用してそれらを強制終了できます。
マウントの問題の結果である場合があるため、削除しようとしているファイルシステムまたはディレクトリをアンマウントします。
umount/path
私はfuser
をこの種のものに使用しています。マウント内のファイルを使用しているプロセスが一覧表示されます。
これが解決策です:
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
killでは、他の人がより安全なオプションを持っているかもしれません。
これは、NFSネットワークファイルシステムを持つサーバーで頻繁に発生します。ファイルは通常.nfs000000123089abcxyz
。
私の典型的な解決策は、ファイルの親ディレクトリの名前を変更するか移動して、1日か2日後に戻ってくると、ファイルは自動的に削除され、その時点でディレクトリを自由に削除できます。
これは通常、ソフトウェアライブラリをインストールまたはコンパイルしているディレクトリで発生します。
自動テストでRAMディスクが作成されたときに、この問題が発生しました。他の回答で提案されているコマンドlsof
およびfuser
は役に立ちませんでした。テスト後、マウントを解除してからフォルダを削除しようとしました。私はそれを取り除くことができなかったので私は長い間混乱していました-私は"Device or resource busy"を取得し続けました!
偶然、私はRAMディスクを取り除く方法を見つけました。 mount
コマンドを実行したのと同じ回数、つまりSudo umount path
自動テストを使用して作成されたため、何度もマウントされ、テスト後に一度マウント解除するだけでは取り除けませんでした。そのため、何度も手動でアンマウントした後、最終的に再び通常のフォルダになり、削除することができました。
うまくいけば、これはこの問題に遭遇した他の誰かを助けることができます!
上記のプラバトの質問を避けて、encfsプロセスを取り残したときにmacos High Sierraでこの問題が発生し、再起動すると解決しましたが、これは
ps -ef | grep name-of-busy-dir
プロセスとPIDを示しました(2列目)。
Sudo kill -15 pid-here
修正しました。
サーバーにアクセスできる場合は、お試しください
サーバーからそのディレクトリを削除する
または、再度mountおよびmountを実行して、umount -l
:通常のumountで問題が発生した場合は、レイジーumount。
私もこの問題を抱えていました
lsof +D path
:出力しません
ps -ef
:関連情報はありません