"`rm`"をしようとすると、「rm: 'ファイル名' を削除できません: デバイスもしくはリソースがビジー状態です」が出力される際の対処
事象
"rm -fr RailsTutorial
"で既存のRailsTutorial
ディレクトリを削除しようとすると、「デバイスもしくはリソースがビジー状態です
」というメッセージが出力されて削除できない。
masa@DESKTOP-0CNPS43:~$ rm -fr RailsTutorial
rm: 'RailsTutorial' を削除できません: デバイスもしくはリソースがビジー状態です
「rm デバイスもしくはリソースがビジー状態です
」で検索すると、"lsof
"コマンドを利用して、このディレクトリを掴んでいるサービスを探してみてとのことだったので、実行してみる。
"lsof"コマンドを実行
参考:デバイスもしくはリソースがビジー状態です
"
RailsTutorial
を掴んでいるサービスを調べるために、"lsof | grep RailsTutorial
"
masa@DESKTOP-0CNPS43:~$ lsof | grep RailsTutorial
lsof: WARNING: can't stat() tmpfs file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/tmp
Output information may be incomplete.
lsof: WARNING: can't stat() tmpfs file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/tmp
Output information may be incomplete.
lsof: WARNING: can't stat() tmpfs file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/tmp
Output information may be incomplete.
lsof: WARNING: can't stat() overlay file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/rootfs
Output information may be incomplete.
lsof: WARNING: can't stat() overlay file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/rootfs
Output information may be incomplete.
lsof: WARNING: can't stat() overlay file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/rootfs
Output information may be incomplete.
lsof: WARNING: can't stat() tmpfs file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/tmp
Output information may be incomplete.
lsof: WARNING: can't stat() overlay file system /mnt/wsl/docker-desktop-data/tarcache/entries/docker.tar/b9268ff848a05ab65e57cc96045435baef2610255457be9231e34477ef01be0f/containers/services/docker/rootfs
Output information may be incomplete.
「WARNING: can't stat() overlay file system
」という警告が出ているので、それを調べる。
WARNING: can't stat() overlay file system
」という警告を調べる。
「参考サイト:lsofを実行すると「lsof: WARNING: can't stat() smbfs file system /Volumes/」エラー
警告メッセージ「WARNING: can't stat() overlay file system
」でググって出てきた、参考サイトを確認すると、マウント解除すればよさそうだ。
、、、が、原因はこれではなかった!
プロが解決策を示してくれた。
解決法
"sudo su
" ルートユーザに変更。
"ps axuww | grep docker
" dockerのプロセスを幅無制限で表示。
"kill [プロセスID]
" プロセスを殺す。(今回は上記psコマンドで出力されたIDを指定した。)
しかし、これでも"rm
"は実行できなかった。
"wsl --shutdown
"(Windosのコマンドプロンプトで実行)wslをシャットダウン(その後自動で再起動される)
"rm -fr RailsTutorial
" を実行すると、削除できました!
masa@DESKTOP-0CNPS43:~$ ls
RailsTutorial RailsTutorial_toyapp
masa@DESKTOP-0CNPS43:~$ rm -rf RailsTutorial
masa@DESKTOP-0CNPS43:~$ ls
RailsTutorial_toyapp
なぜ上記解決法で解決できたのか
プロの方曰く、
VSCodeとUbuntuとのコネクションが切断されたとこによってソケットが更新され、掴んでたセッションが切断されたのでビジー状態ではなくなり、削除が可能になった。
とのことです。
プロの方、お助けいただき、誠にありがとうざいました。。