Usando Mac OS X `at` para programar una tarea diaria para borrar carpetas .Trash

Usando Mac OS X `at` para programar una tarea diaria para borrar carpetas .Trash

¿Cómo uso el atcomando OS X para programar una limpieza diaria de la .Trashcarpeta del usuario?

Estoy pensando en algo como:

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

¿Esto limpiará la basura todos los días?

Ejecutaremos este comando como parte de un script de inicio de sesión, por lo que también necesito una forma de borrar todas las tareas programadas. ¿Hay alguna manera de hacerlo at -r all?

Respuesta1

rm -rf ~/Trash/*a menudo resulta en errores de permiso denegado a menos que lo ejecute como root. osascript -e 'tell app "Finder" to empty trash'También mostraría un cuadro de diálogo de error si algunos archivos están en uso.

Podría intentar agregar 0 0 * * * rm -rf ~/Trash/*al crontab de la raíz ( sudo crontab -e).

O usando launchd, guarde una lista de propiedades como esta como /Library/LaunchAgents/empty_trash.plist(y hágala propiedad de 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>

Se carga automáticamente en el siguiente inicio de sesión, pero puedes cargarlo inmediatamente con sudo launchctl load /Library/LaunchAgents/empty_trash.plist.

Color avellanaTambién tiene opciones para vaciar la papelera automáticamente.

información relacionada