Ejecutando Cron Job con permisos Sudo

1

Estrictamente para fines de aprendizaje (posiblemente también para mantenimiento) Estoy intentando que un trabajo de Cron vacíe mi basura una vez al día.

He abierto el terminal e ingresé el comando crontab -e para acceder al editor de VI para agregar el comando. Ingresé al modo Insertar y agregué * * * * * sudo rm -rf ~/.Trash/* , presioné la tecla de escape para salir y salir de VI con :wq!

Este script en particular lo ejecuto cada minuto solo para ver si funciona y no. Pensé que podría ser un problema que no tuviera acceso de root al cron, así que agregué la misma línea al archivo sudo crontab -e y no parece que se esté guardando.

¿Alguna idea sobre qué podría estar mal con este trabajo cron?

    
pregunta MacMania 07.01.2017 - 23:20

2 respuestas

1

Crees que necesitas usar sudo. Usted no No estás intentando vaciar la carpeta de la Papelera de la raíz. Tienes permiso para eliminar archivos en tu propia carpeta ~/.Trash , por lo que no necesitas convertirte en root (que es lo que hace sudo) para hacer el rm .

Puedes usar simplemente:

* * * * * rm -rf ~/.Trash/*

Tenga en cuenta que también recomendaría no usar ~ en un comando peligroso como este (cada vez que llame a rm -rf es potencialmente peligroso). Coloque la ruta completa a la carpeta .Trash para que sea muy explícito lo que sucederá cuando se ejecute la línea. Algo como /Users/yourusername/.Trash/ . Entonces:

* * * * * rm -rf /Users/yourusername/.Trash/*

Donde reemplaza yourusername con su nombre de usuario real en el host.

    
respondido por el Marc Wilson 08.01.2017 - 04:04
3

Si desea especificar el crontab del usuario raíz, debe usar la opción -u .

sudo crontab -e -u root

Dicho esto, hay una forma más segura de limpiar su basura que simplemente eliminando todo el directorio. Personalmente, me gusta eliminar los archivos que son más antiguos que un cierto número de días. De esta manera, si borro algo de forma involuntaria hoy, tengo un "búfer" de tiempo para recuperarme.

El siguiente comando eliminará todos los archivos que sean más antiguos de 15 días.

find ~/.Trash/ -type f -mtime +15 -exec rm {} \;

Ahora ... dicho eso ...

cron ha quedado en desuso para launchd . Me tomaría un tiempo y aprender a crear .plist archivos XML para lauchd y usar ese servicio en lugar de cron

    
respondido por el Allan 08.01.2017 - 05:10

Lea otras preguntas en las etiquetas