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

0

Como eu uso o comando OS X at para agendar uma limpeza diária da pasta .Trash do usuário?

Estou pensando em algo como:

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

Isso limpará o lixo todos os dias?

Nós estaremos executando este comando como parte de um script de login, então eu também preciso de uma maneira de limpar todas as tarefas agendadas. Existe uma maneira de at -r all ?

    
por Chris Nolet 25.02.2013 / 04:12

1 resposta

1

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

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

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

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

Hazel também tem opções para esvaziar o lixo automaticamente.

    
por 25.02.2013 / 10:50