Mac OS X `at` を使用して、.Trash フォルダをクリアする毎日のタスクをスケジュールする

Mac OS X `at` を使用して、.Trash フォルダをクリアする毎日のタスクをスケジュールする

OS X コマンドを使用して、ユーザーのフォルダーatを毎日クリーンアップするようにスケジュールするにはどうすればよいですか?.Trash

私は次のようなことを考えています:

rm -rf ~/.Trash/**/* | at 0:00 + 1 day

これで毎日ゴミを掃除してくれるのでしょうか?

このコマンドをログイン スクリプトの一部として実行するので、スケジュールされたすべてのタスクをクリアする方法も必要です。方法はありますかat -r all?

答え1

rm -rf ~/Trash/*多くの場合、ルートとして実行しない限り、権限拒否エラーが発生します。osascript -e 'tell app "Finder" to empty trash'一部のファイルが使用中の場合は、エラー ダイアログも表示されます。

0 0 * * * rm -rf ~/Trash/*ルートの crontab ( ) に追加してみることもできますsudo crontab -e

または、launchd を使用して、次のようにプロパティ リストを保存します/Library/LaunchAgents/empty_trash.plist(所有者を root にします)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>EnableGlobbing</key>
    <true/>
    <key>Label</key>
    <string>empty_trash</string>
    <key>ProgramArguments</key>
    <array>     
        <string>rm</string>
        <string>-rf</string>
        <string>/Users/username/Trash/*</string> <!-- ~/ doesn't work -->
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>0</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

次回ログイン時に自動的に読み込まれますが、 を使用してすぐに読み込むこともできますsudo launchctl load /Library/LaunchAgents/empty_trash.plist

ヘーゼルゴミ箱を自動的に空にするオプションもあります。

関連情報