1

現在、さまざまなバージョンの PHP をコンパイルしており、いくつかのごみフォルダーを削除したいと考えています。

削除したい「php-5.4.7-src」というフォルダーを取得しましたが、削除すると

$ rm -Rf php-5.4.7-src

常にそこにポップアップします

rm: cannot remove directory php-5.4.7-src/ext/standard/tests/general_functions: File exists
rm: cannot remove directory php-5.4.7-src/ext/standard/tests: File exists
rm: cannot remove directory php-5.4.7-src/ext/standard: File exists
rm: cannot remove directory php-5.4.7-src/ext: File exists
rm: cannot remove directory php-5.4.7-src: File exists

だから私はやった

$ find . 

$ find . -type f

上記のフォルダーがポップアップするだけで、ファイルは存在しません。私はすべてのフォルダーの所有者でもあり、ルートとしてもそれらを削除しようとしました。

存在しないファイルを削除するにはどうすればよいですか?

4

1 に答える 1

1

これはあなたの質問に答えるものではなく、将来の頭痛の種を避けるためのちょっとしたスタイルの問題であることを理解しています. スクリプトを別の種類の UNIX に移動する必要がある場合、スクリプトが壊れる可能性があります。再帰的な削除を行うための従来のフラグは-r、 ではなく-Rです。シフトキーを押す必要もありません:)

次に、あなたの質問に答えるかもしれないものに進みます。実行中のプロセスをチェックしたと言ったのは知っていますが、それがiノードを開いたままにしておく唯一の方法であり、開いているiノードだけが階層が削除されないようにします。updatedその時点でディレクトリをクロールしていた可能性のあるシステムで頻繁に実行されるプロセスなど、他のプロセスがあります。試してみるとよいことの 1 つはsync、保留中のすべての書き込みが確実にフラッシュされるように実行することです。

何かがディレクトリを開いたままにしています。lsof +D php-5.4.7-srcまた、正確に何を確認したい場合もあります。

于 2012-12-06T07:43:39.553 に答える