Crontab è uno strumento di esecuzione pianificata comunemente utilizzato nei sistemi Unix/Linux, che può eseguire lavori specifici senza intervento manuale. Molte volte dobbiamo utilizzare il comando Crontab. Ad esempio, lo script acme.sh menzionato nel certificato SSL del nome di dominio gratuito Let's Encrypt Wildcard utilizza l'attività pianificata Crontab per aggiornare il certificato SSL.
Attraverso il comando crontab, possiamo eseguire istruzioni di sistema specifiche o script di shell a intervalli fissi. Quando il VPS Linux monta Google Drive e Dropbox, possiamo utilizzare il comando Crontab per ottenere il backup di sincronizzazione programmato e utilizzare Crontab per riavviare regolarmente il VPS e il server. ogni giorno. Oppure servizi Nginx, PHP, MysqL, ecc.
In breve, padroneggiare la sintassi di base del comando Crontab è molto necessario per gestire i nostri host VPS. Questo articolo spiega come utilizzare il comando Crontab di Linux attraverso esempi senza approfondire l'esplorazione. Lo scopo principale è facilitare query e riferimenti rapidi in futuro.
Per ulteriori comandi e applicazioni relativi all'hosting VPS, puoi consultare:
- Riepilogo dei comandi di monitoraggio del sistema Linux: CPU master, memoria, I/O del disco, ecc. per individuare i colli di bottiglia delle prestazioni
- Tre strumenti di comando Rsync, SCP e soluzione Tar-quick per il riposizionamento di siti Web remoti VPS e la sincronizzazione dei dati
- Tre modi per condividere le directory delle cartelle in Linux: montaggio remoto NFS, archiviazione condivisa GlusterFS e directory condivise Samba
1. Crontab visualizza e modifica il riavvio
1. Visualizza l'elenco delle attività di esecuzione pianificate di crontab
crontab -l
2. Modifica crontab per eseguire attività regolarmente
crontab -e
3. Elimina le attività pianificate di crontab
crontab -r
4. Comandi correlati:
sudo service crond start #启动服务
sudo service crond stop #关闭服务
sudo service crond restart #重启服务
sudo service crond reload #重新载入配置
sudo service crond status #查看服务状态
2. Sintassi del formato di base di Crontab
Espressione temporale di crontab:
基本格式 :
* * * * * command
分 时 日 月 周 命令
Diamo prima un’occhiata a un esempio. Esegui il programma di backup ogni giorno alle 1:00: 0 1 * * * /root/wzfou.com/backup.sh
. Tra questi, /root/wzfou.com/backup.sh
è il percorso dello script. Per utilizzare il percorso assoluto, vedere la figura seguente per il formato della data precedente.
Istanza 1: viene eseguito ogni minuto
* * * * * /root/wzfou.com/backup.sh
Istanza 2: Viene eseguito una volta ogni ora al 3° e al 15° minuto
3,15 * * * * /root/wzfou.com/backup.sh
Esempio 3: Eseguire una volta al giorno dalle 8:00 alle 11:00 al 3° e al 15° minuto
3,15 8-11 * * * /root/wzfou.com/backup.sh
Istanza 4: Eseguito ogni due giorni al 3° e 15° minuto dalle 8:00 alle 11:00
3,15 8-11 */2 * * /root/wzfou.com/backup.sh
Istanza 5: Eseguito ogni lunedì dalle 8:00 alle 11:00 al 3° e 15° minuto
3,15 8-11 * * 1 /root/wzfou.com/backup.sh
Esempio 6:Eseguire una volta ogni notte alle 21:30
30 21 * * * /root/wzfou.com/backup.sh
Istanza 7: Eseguire una volta al mese alle 4:45 il 1, 10 e 22
45 4 1,10,22 * * /root/wzfou.com/backup.sh
Esempio 8:Eseguire una volta ogni sabato e domenica alle 1:10
10 1 * * 6,0 /root/wzfou.com/backup.sh
Istanza 9: Eseguita ogni 30 minuti tra le 18:00 e le 23:00 tutti i giorni
0,30 18-23 * * * /root/wzfou.com/backup.sh
Istanza 10: Eseguita una volta ogni sabato alle 23:00
0 23 * * 6 /root/wzfou.com/backup.sh
Esempio 11:Eseguire una volta ogni ora
* */1 * * * /root/wzfou.com/backup.sh
Esempio 12:Eseguito ogni ora tra le 23:00 di ogni notte e le 7:00 del giorno successivo
* 23-7/1 * * * /root/wzfou.com/backup.sh
Esempio 13: viene eseguito il primo giorno di ogni settimana (ovvero inizia alle 24:00 ogni domenica sera).
@weekly /root/wzfou.com/backup.sh
Esempio 14:Eseguire una volta il 15 di ogni mese.
0 11 15 * * /root/wzfou.com/backup.sh
Istanza 15: viene eseguito una volta il primo giorno di ogni mese (ovvero inizia alle 0:00 del 1° di ogni mese).
@monthly /root/wzfou.com/backup.sh
Istanza 16: viene eseguito una volta nel mese specificato (eseguito una volta ogni notte alle 0:00 in gennaio, aprile e giugno).
0 0 * jan,apr,jun * /root/wzfou.com/backup.sh
Istanza 17: Eseguita una volta dopo il riavvio.
@reboot /root/wzfou.com/backup.sh
Esempio 18:Invia una notifica via email dopo l'esecuzione dell'attività pianificata.
MAILTO="raj" 1 1 * * * /root/wzfou.com/backup.sh
Esempio 19: Specificare la shell (il valore predefinito è /bin/bash)
SHELL=/bin/sh 1 1 * * * /root/wzfou.com/backup.sh
Istanza 20: specifica le variabili di ambiente.
PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 1 * * * /root/wzfou.com/backup.sh
4. Possibili problemi con Crontab
4.1 Crontab non ha effetto immediato
L'attività pianificata di Crontab appena creata dovrà attendere 2 minuti prima di essere eseguita dopo averla salvata. Naturalmente, se desideri eseguirla immediatamente, puoi riavviare Crontab. Quando crontab fallisce, puoi provare /etc/init.d/crond restart per risolvere il problema, o controllare il log per vedere se una determinata attività viene eseguita/viene segnalato un errore tail -f /var/log/cron.
4.2 Crontab non viene eseguito
Quando il percorso del file è coinvolto nello script, scrivi il percorso globale Dopo aver aggiornato l'ora del sistema e il fuso orario, è necessario riavviare cron. Quando l'esecuzione manuale dello script è corretta, ma il crontab non viene eseguito, molto probabilmente si tratta di una variabile d'ambiente. Puoi provare a introdurre direttamente la variabile d'ambiente nel crontab per risolvere il problema, ad esempio:
0 * * * * . /etc/profile;/bin/sh /root/wzfou.com/backup.sh
4.3 Crontab non ha il permesso di esecuzione
Prestare attenzione alla pianificazione delle attività a livello di sistema e alla pianificazione delle attività a livello di utente. Solo l'utente root e il proprietario del file crontab possono eseguire -e, -l, -r e - v< Utilizzare NomeUtente dopo il flag ept4> per modificare, elencare, rimuovere o verificare il file crontab per un utente specificato.
L'operazione di pianificazione delle attività dell'utente root può essere impostata tramite "crontab -uroot -e" oppure le attività pianificate possono essere scritte direttamente nel file /etc/crontab.
Per modificare il crontab di un altro utente, esegui il seguente comando come root. Lo stesso formato (aggiungi "-u nomeutente" alla fine del comando) può essere utilizzato anche per elencare o eliminare i crontab.
crontab -u username -e
4.4 Notifica dopo l'esecuzione di Crontab
Quando l'attività pianificata di Crontab viene eseguita all'ora specificata, il sistema ti invierà una lettera che mostra il contenuto dell'esecuzione del programma, che può essere visto nel log /var/log/cron. Se non desideri ricevere tale notifica, aggiungi > /dev/null 2>&1
dopo uno spazio in ogni riga.