Usando o Mac OS X `at` para agendar uma tarefa diária para limpar pastas .Trash

Usando o Mac OS X `at` para agendar uma tarefa diária para limpar pastas .Trash

Como uso o atcomando do OS X para agendar uma limpeza diária da .Trashpasta do usuário?

Estou pensando em algo como:

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

Isso limpará o lixo todos os dias?

Estaremos executando este comando como parte de um script de login, então também preciso de uma maneira de limpar todas as tarefas agendadas. Existe uma maneira de fazer isso at -r all?

Responder1

rm -rf ~/Trash/*geralmente resulta em erros de permissão negada, a menos que você o execute como root. osascript -e 'tell app "Finder" to empty trash'também mostraria uma caixa de diálogo de erro se alguns arquivos estivessem em uso.

Você pode tentar adicionar 0 0 * * * rm -rf ~/Trash/*ao crontab do root ( sudo crontab -e).

Ou usando o launchd, salve uma lista de propriedades como esta como /Library/LaunchAgents/empty_trash.plist(e torne-a propriedade do 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>

Ele é carregado automaticamente no próximo login, mas você pode carregá-lo imediatamente com sudo launchctl load /Library/LaunchAgents/empty_trash.plist.

Avelãtambém possui opções para esvaziar a lixeira automaticamente.

informação relacionada