Esecuzione del processo Cron con autorizzazioni Sudo

1

Rigorosamente per scopi di apprendimento (possibilmente anche per la manutenzione) Sto provando ad avere un lavoro di Cron vuoto nella mia spazzatura una volta al giorno.

Ho aperto il terminale e inserito il comando crontab -e per accedere all'editor VI per aggiungere il comando. Ho inserito la modalità Inserisci e ho aggiunto * * * * * sudo rm -rf ~/.Trash/* , ho premuto il tasto Esc per uscire e chiudere VI con :wq!

Questo particolare script ho eseguito ogni minuto solo per vedere se funziona e non lo è. Ho pensato che potrebbe trattarsi di un problema con cron che non ha accesso root, quindi ho aggiunto la stessa riga al file sudo crontab -e e non sembra che stia salvando.

Qualche idea su cosa potrebbe essere sbagliato con questo cron job?

    
posta MacMania 07.01.2017 - 23:20
fonte

2 risposte

1

Pensi di aver bisogno di usare sudo. Non lo fai. Non stai tentando di svuotare la cartella Cestino di root. Hai il permesso di eliminare i file nella tua cartella ~/.Trash , quindi non devi diventare root (che è ciò che fa sudo) per fare rm .

Puoi semplicemente usare:

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

Nota, sconsiglio anche di usare ~ in un comando pericoloso come questo (ogni volta che chiami rm -rf è potenzialmente pericoloso). Metti il percorso completo alla cartella .Trash , quindi è molto esplicito cosa accadrà quando la linea viene eseguita. Qualcosa come /Users/yourusername/.Trash/ . Quindi:

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

Dove sostituisci yourusername con il tuo nome utente reale sull'host.

    
risposta data 08.01.2017 - 04:04
fonte
3

Se vuoi specificare il crontab dell'utente root, devi usare l'opzione -u .

sudo crontab -e -u root

Detto questo, c'è un modo più sicuro per ripulire il cestino piuttosto che rimuovere l'intera directory. Personalmente, mi piace rimuovere file più vecchi di un certo numero di giorni. In questo modo, se elimini inavvertitamente qualcosa oggi, ho un "buffer" di tempo in cui recuperare.

Il seguente comando eliminerà tutti i file più vecchi di 15 giorni.

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

Ora ... quello disse ...

cron è stato deprecato per launchd . Vorrei un po 'di tempo e imparare come creare .plist file XML per lauchd e usare quel servizio invece di cron

    
risposta data 08.01.2017 - 05:10
fonte

Leggi altre domande sui tag