web-dev-qa-db-ja.com

Mac OS X `AT`を使用して、毎日のタスクをスケジュールして。トラッシュフォルダを消去します。

OS X atコマンドを使用して、ユーザーの.Trashフォルダの毎日のクリーンアップをスケジュールしますか?

私は以下の行に沿って何かを考えています。

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

これは毎日ゴミをきれいにしますか?

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

1
Chris Nolet

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

Rootのcrontab(0 0 * * * rm -rf ~/Trash/*)に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ですぐにロードできます。

Hazel トラッシュを自動的に空にするためのオプションもあります。

2
Lri