Domanda Come posso impostare un lavoro Cron?


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

Come aggiungo lavori Cron in Ubuntu?


486
2017-08-16 08:25


origine




risposte:


Metti uno script di 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 compiti più specifici, ad es. due volte al mese o ogni 5 minuti. Vai al terminale e digita:

crontab -e

Questo aprirà il tuo personale crontab (file di configurazione di cron). La prima riga in quel file spiega tutto! In ogni riga è possibile definire un comando da eseguire e la relativa pianificazione, e il formato è abbastanza semplice quando si ottiene il blocco di esso. 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 precedenti 5, 34 e 55 e qualunque ora sia definita.

Puoi anche usare gli intervalli. Sono definiti così: */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.


600
2017-08-16 08:58



Sono a livello di sistema e funzionano con privilegi elevati. Non metterei nulla lì a meno che non vi sia una necessità urgente di accesso o permesso. Come regola generale, prova a fare cose senza capacità. Pertanto, mi piace questa risposta meglio: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/... - H Marcelo Morales
@Marcelo Morales, che eseguirà anche i comandi dati come root! se invece non usi sudo, creerai un crontab utente e questo verrà eseguito come l'utente che lo ha creato! - LassePoulsen
* / 15 * * * * / path / to / command è stato molto utile per me! Grazie! - Andrew Odendaal
Vale la pena notare che queste modifiche sono applicate automaticamente, non è necessario riavviare / ricaricare nulla. - Molomby
Un altro suggerimento utile è quello invece di */15 * * * * /path/to/command, tu puoi fare @reboot /path/to/command per eseguire qualcosa all'avvio. - Kenneth Worden


Se il lavoro che vuoi eseguire può essere eseguito con gli stessi privilegi del tuo utente, ti consiglio di utilizzare un crontab utente che puoi modificare eseguendo EDITOR="gedit" crontab -e(che verrà utilizzato 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 linea come questa

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

e salva il file.

Puoi vedere il contenuto dell'utente crontab con crontab -l.

Il modo più flessibile è utilizzare il sistema crontab che puoi modificare eseguendo sudo crontab -e in un terminale. Ciò consentirà di eseguire i comandi come root (nel caso in cui sia necessario il livello di privilegio) o qualsiasi altro utente sul sistema.

Quindi se vuoi eseguire qualcosa ogni 10 minuti come radice, per esempio, aggiungi una linea come questa

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

e salva il file.(notare l'aggiunta dell'utente alla linea)

Puoi vedere il contenuto del file crontab di sistema con sudo crontab -l.

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


93
2017-08-16 09:21



Ecco un dolce manipolatore cron interattivo che ti darà l'inglese per l'ora di cron crontab.guru - CTS_AE


Se si preferisce farlo utilizzando una GUI, è possibile andare al Software Center e installare Attività pianificate (o corri sudo apt-get install gnome-schedule). Fornirà una potente GUI per aggiungere attività di cron.

Nota che se usi questo metodo, le attività di default verranno eseguite come tuo utente, non come root. Questo di solito è una buona cosa.


51
2018-01-31 23:59



non disponibile per la 16.04 a quanto pare bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060 - TankorSmash
@TankorSmash Puoi averlo Qui - M. Becerra
I requisiti del pacchetto non possono essere soddisfatti in data 16.04 - Odysseus Ithaca


io raccomando Task Scheduler di KDE (kde-config-cron)  Install kde-config-cron. Accedilo dal Impostazioni di sistema nel Agenda modulo lì.

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

enter image description here


24
2018-02-11 14:35





L'Utilità di pianificazione di KDE non funzionerà nella normale Ubuntu. Funziona solo su KDE Systems come KUbuntu. Per i sistemi non KDE preferirai usare gnome-schedule

$ sudo apt-get install gnome-schedule

L'app è Attività pianificate in Dash.


11
2017-09-27 20:25



Non trovato per Ubuntu 16.04 - SaidbakR
Si prega di dare un'occhiata a I can't install gnome schedule on Ubuntu 16.04 @ askubuntu.com/questions/785657/.... C'è un pacchetto da scaricare @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/.... Esibiscilo $ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb - Antonio


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

Ho capito che quando usi:

crontab -e 

Quindi crea il file:

/var/spool/cron/crontabs/root 

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

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

Abbiamo anche bisogno di 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 corri crontab -e ci sono già lavori Cron nella lista, quindi puoi aggiungere alla lista usando il seguente comando:

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

8