2011-12-20 21 views
32

Sto provando ad aggiungere una riga a crontab su Ubuntu.Aggiungendo a crontab uno script di shell su Ubuntu

In questo momento, sto facendo crontab -e e modificando il crontab lì.

Tuttavia, non riesco a trovare il vero file crontab, dal momento che crontab -e sembra darti una copia di lavoro temporanea.

/etc/crontab si presenta come il sistema crontab.

Qual è il percorso del crontab a cui viene salvato il numero crontab -e?

Grazie!

+0

https://stackoverflow.com/questions/610839/how-can-i-programmatically-create-a-new-cron-job – dskrvk

+0

Possibile duplicato di [Come posso creare un nuovo cron job in modo programmatico?] (https://stackoverflow.com/questions/610839/how-can -i-programmatically-create-a-new-cron-job) –

risposta

22

Utilizzare crontab -l > file per elencare crontab dell'utente corrente su file e crontab file, per installare nuovo crontab.

1

Il file crontab utente è in '/ var/spool/cron/crontabs' per ubuntu.

[email protected]:~$ sudo ls -lh /var/spool/cron/crontabs/adyliu 
-rw------- 1 adyliu crontab 1.2K 2012-03-01 09:33 /var/spool/cron/crontabs/adyliu 

'adyliu' è il tuo login utente.

È necessario il privilegio di root per visualizzare questo file.

L'utilizzo di "crontab -e" è forse il modo migliore per modificare lo script di cron.

Nel manuale:

Gli utenti non sono autorizzati a modificare i file in quella directory direttamente per garantire che solo gli utenti autorizzati dal sistema per eseguire task periodici loro può aggiungere, e solo sintatticamente corrette crontabs sarà scritto lì.

79

si può anche fare senza un file temporaneo:

(crontab -l ; echo "0 4 * * * myscript")| crontab - 
+0

vorrei aver guardato prima questo. simpatico. – mdandr

+2

Che cosa significa 'crontab -'? – Noumenon

+3

'crontab -' significa sostituire crontab con input standard. – Duvrai

11

Se il vostro crontab è vuoto si dovrebbe usare 2>/dev/null:

(crontab -l 2>/dev/null; echo "0 4 * * * myscript")| crontab - 
+0

Prendilo con cautela perché in questo modo' 2>/dev/null' potrebbe non farti sapere di nessun altro errori, personalmente preferirei vedere un errore una volta che saltare tutti gli errori per sempre – Ordiel

+0

@Ordiel Ci sono davvero altri errori che potresti ottenere da 'crontab -l'? – Noumenon

+0

In tipico comportamento della shell, la pipe omette già stderr: quindi senza toccare stderr, l'errore msg non dovrebbe ancora finire nel crontab. E.g, se tu volessi * stderr nella pipe, in Bash aggiungerai un '&' dopo il pipe: | & – Rondo

Problemi correlati