私は少し混乱しています。 tmpreaperを使用して30日より古いすべてのファイルを削除したいダウンロードディレクトリがあります。問題の1つは、問題のディレクトリが、失われたディレクトリと見つかったディレクトリを持つ別のパーティションです。もちろん、それを保持する必要があるため、--protect 'lost+found'
を追加しました。問題は、tmpreaperが次のように出力することです。
error: chdir() to directory 'lost+found' (inode 11) failed: Permission denied
(PID 30604) Back from recursing down `lost+found'.
Entry matching `--protect' pattern skipped. `lost+found'
Lost *などの他のパターンで試しました...すべてのファイル(lost + foundを除く)を所有しているため、スーパーユーザー特権の理由がないため、非rootユーザーとしてtmpreaperを実行しています。
Rootとしてtmpreaperを実行する必要がありますか?それとも、私のシェルスキルは思ったほど良くありませんか?問題は次のとおりだと思います。
tmpreaper will chdir(2) into each of the directories you've
specified for cleanup, and check for files matching the
<Shell_pattern> there. It then builds a list of them, and
uses that to protect them from removal.
何か考えやアドバイスはありますか?
私が実行しようとしているコマンドは次のようなものです
$ /usr/sbin/tmpreaper -t --protect 'lost+found' 30d /mydir 1> /dev/null
error: chdir() to directory `lost+found' (inode 11) failed: Permission denied
編集:
Redmumbaは、戻りコードがまだゼロであり、ファイルが削除されていることに気づきました。この投稿を書いたときに何も削除されなかったので、以前に他の問題があったに違いありません。とにかく今は機能しています、ありがとう。
lost+found
ディレクトリはファイルシステム固有であり、権限を変更した場合でも、再マウント時に(または場合によってはさらに早く)自動的にroot:root
に戻されます。ただし、そこにあるものを削除したくないように思われるため、指定しているディレクトリに問題がある可能性があります。
たとえば、別のパーティションにある/tmp
内のファイルを削除するとします。 tmpreaper --protect 'lost+found' /tmp/*
を実行すると、chdir
が/tmp/lost+found
になりますその後シェルグロブを適用します-しかし、見たパーミッションの問題で失敗します。 tmpreaper
のディレクトリを指定するときは、親ディレクトリ、つまりtmpreaper --protect 'lost+found' /tmp
を使用するだけです。
うまくいけば、それがあなたの問題です...そうでない場合は、より多くの情報(使用している正確なコマンドなど)で更新してください。私たちはあなたを軌道に戻すことができます!
編集:それで私はそれをローカルにセットアップしました、そして私はそれがうまく終了することに気づきました。エラーメッセージを出力するだけで、それに反応しないようです。つまり、成功を示す0を返します。私はもともと失敗していると思っていましたが、そうではないようです。これが意図された動作であるとは想像できないので、バグを提出することは詳細が正しいかもしれないように思えます。