it-swarm.it

Come posso impostare un lavoro Cron?

Voglio pianificare un'attività da eseguire su base regolare e ho sentito che Cron è il modo per farlo.

Come faccio ad aggiungere lavori Cron in Ubuntu?

534
Gabriel Solomon

Inserire uno script Shell in una di queste cartelle: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly o /etc/cron.weekly.

Se questi non ti bastano, puoi aggiungere attività più specifiche, ad es. due volte al mese o ogni 5 minuti. Vai al terminale e digita:

crontab -e

Questo aprirà il tuo crontab personale (file di configurazione cron). La prima riga di quel file spiega tutto! In ogni riga puoi definire un comando da eseguire e la sua pianificazione, e il formato è abbastanza semplice quando ne hai la certezza. La struttura è:

minute hour day-of-month month day-of-week command

Per tutti i numeri è possibile utilizzare elenchi, ad es. 5,34,55 nel campo dei minuti significherà correre alle 5 passate, 34 passate e 55 passate qualunque sia l'ora definita.

Puoi anche usare gli intervalli. Sono definiti in questo modo: */20. Questo esempio significa ogni 20, quindi nella colonna dei minuti è equivalente a 0,20,40.

Quindi, per eseguire un comando ogni lunedì alle 5:30 del pomeriggio:

30 17 * * 1 /path/to/command

o ogni 15 minuti

*/15 * * * * /path/to/command

Si noti che il giorno della settimana va da 0 a 6, dove 0 è domenica.

Puoi leggere di più qui .

652
LassePoulsen

Se il lavoro che si desidera eseguire può essere eseguito con gli stessi privilegi dell'utente, si consiglia di utilizzare un crontab utente che è possibile modificare eseguendo EDITOR="gedit" crontab -e (che utilizzerà gedit per modificare il file crontab) o semplicemente crontab -e (che utilizzerà l'editor predefinito) in un terminale.

Se vuoi eseguire qualcosa ogni 10 minuti, ad esempio, aggiungi una riga come questa

*/10 * * * * /usr/bin/somedirectory/somecommand

e salva il file.

Puoi vedere i contenuti dell'utente crontab con crontab -l.

Per aggiungere un cron job che viene eseguito come root, è possibile modificare il crontab di root eseguendo Sudo crontab -e.

Il modo più flessibile è utilizzare il crontab di sistema /etc/crontab che puoi modificare solo con i privilegi di root. In questo file, l'utente deve eseguire ciascun comando come specificato, in modo da poter eseguire i comandi come root (nel caso in cui sia necessario quel livello di privilegio) o qualsiasi altro utente sul sistema.

Ad esempio, se vuoi eseguire qualcosa ogni 10 minuti come root, aggiungi una riga come questa

*/10 * * * * root /usr/bin/somedirectory/somecommand

(nota l'aggiunta dell'utente alla riga)

Puoi vedere il contenuto del file crontab di sistema con cat /etc/crontab.

Maggiori dettagli su: https://help.ubuntu.com/community/CronHowto

101
Li Lo

Se si preferisce farlo utilizzando una GUI, è possibile accedere al Software Center e installare Attività pianificate (oppure eseguire Sudo apt-get install gnome-schedule). Fornirà una potente interfaccia grafica per aggiungere attività cron.

Si noti che se si utilizza questo metodo, le attività per impostazione predefinita verranno eseguite come proprio utente, non come root. Questa è di solito una buona cosa.

52
Javier Rivera

Consiglio Task Scheduler di KDE (kde-config-cron)Install kde-config-cron . Accedete da Impostazioni di sistema nel modulo Utilità di pianificazione lì.

Gestisce Crontabs sia personali che di sistema e la facilità di creare i limiti di tempo mi ha sorpreso molto (vedi lo screenshot qui sotto). Penso che questa parte sia davvero sottovalutata.

enter image description here

26
gertvdijk

L'utilità di pianificazione di KDE non funzionerà con Ubuntu normale. Funziona solo con sistemi KDE come KUbuntu. Per i sistemi non KDE preferirai usare gnome-schedule

$ Sudo apt-get install gnome-schedule

L'app è Attività pianificate nel Dash.

11
Antonio

Volevo impostare un lavoro Cron per l'esecuzione di uno script bash, quindi l'esecuzione dello script avrebbe aggiunto un lavoro cron.

Mi sono reso conto che quando usi:

crontab -e 

Quindi crea il file:

/var/spool/cron/crontabs/root

Dove root è il nome dell'utente che esegue il comando crontab. Quindi, basandoci su questo e almeno in 14.04, possiamo eseguire i seguenti comandi bash per creare un nuovo lavoro Cron:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

Dobbiamo anche impostare la proprietà corretta per il file:

chown root:root /var/spool/cron/crontabs/root

E imposta le autorizzazioni corrette:

chmod 600 /var/spool/cron/crontabs/root

Se quando si esegue crontab -e ci sono già lavori Cron nell'elenco, allora è possibile aggiungere all'elenco usando il seguente comando:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root
10
Craig van Tonder

Esempio di esecuzione dello script test_cron.sh di cron ogni minuto su Ubuntu 18.04 usando il collegamento simbolico:

test_cron.sh file:

#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log

Se vuoi usare variabili di ambiente nel tuo script come $USER in percorsi è meglio digitare un percorso preciso, bash non conoscerà le tue variabili al momento dell'esecuzione.

myname è il nome utente (parte del gruppo radice, non sono sicuro che siano necessari i privilegi di radice).

Consenti agli utenti di impostare lavori cron, il file verrà creato se necessario:

Sudo nano /etc/cron.allow

root
myname

Il percorso dello script è /home/myname/Shell/test_cron.sh

Ho cambiato il proprietario e l'ho reso eseguibile:

Sudo chown myname /home/myname/Shell/test_cron.sh
chmod +x /home/myname/Shell/test_cron.sh

Ho aggiunto un link simbolico:

Sudo ln -s /home/myname/Shell/test_cron.sh /usr/bin/test_cron

Registrato come myname Ho aggiunto una nuova attività per eseguire test_cron ogni minuto.

crontab -e

*/1 * * * * test_cron

Per verificare se il comando nell'elenco:

crontab -l

*/1 * * * * test_cron

Per verificare l'esecuzione

grep -i cron /var/log/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
2
Alexander