Как использовать OS X at команде, чтобы запланировать ежедневную очистку пользователя .Trash ?

Я думаю о чем-то вроде:

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

Будет ли это убирать мусор каждый день?

Мы будем выполнять эту команду как часть сценария входа в систему, поэтому мне также нужен способ очистить все запланированные задачи. Есть ли способ at -r all?

1 ответ1

1

rm -rf ~/Trash/* часто приводит к ошибкам, в которых отказано в разрешении, если вы не запускаете его как root. osascript -e 'tell app "Finder" to empty trash' также будет отображать диалоговое окно с сообщением об ошибке, если некоторые файлы используются.

Вы можете попробовать добавить 0 0 * * * rm -rf ~/Trash/* в корневой каталог root (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 .

У Хейзел также есть опции для автоматического удаления мусора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .