En aquest tutorial, us proporcionarem la introducció bàsica de tot el que heu d’entendre per programar una feina amb cron. Això inclou la sintaxi bàsica de cron, editar un fitxer crontab, programar una feina amb cron amb pocs exemples, veure la feina cron, etc.
Conceptes bàsics de Cron Job
Anem a entendre alguns conceptes bàsics d’un treball cron.
Què és Crond?
Crond és el dimoni del sistema Linux que s'executa en segon pla i comprova cada minut per veure si hi ha alguna feina programada en aquest moment. Si n’hi ha, realitza aquesta tasca, en cas contrari roman inactiva.
Sintaxi de la feina de Cron
La sintaxi del treball cron és la següent:
* * * * *comandament/guió
Per l'esquerra:
- El primer * correspon a Minuts (0-59)
- El segon * correspon a Hores (0-23)
- El tercer * correspon al dia del mes (1-31)
- El quart * correspon al mes de l'any (1-12)
- El cinquè * correspon al dia de la setmana (0-6, de diumenge a dissabte)
Per especificar diversos valors en un camp, utilitzeu els símbols d'operador següents:
- Asterisc (*): Per especificar tots els valors possibles per a un camp
- Guió (-): Per a s especificar un ventall de valors
- La coma (,): Per especificar una llista de valors
- Separador (/): Per especificar un valor de pas
Edició del fitxer Crontab
Crontab és un fitxer que conté els treballs programats en una sintaxi específica. Hi ha dos tipus de fitxers crontab; un per a treballs cron específics del sistema i l’altre per a treballs cron específics de l’usuari.
Feines de cron del sistema
Els treballs cron a tot el sistema es troben a / etc / crontab arxiu i /etc/cron.d directori, i s’executen /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly i /etc/cron.monthly. Només un administrador del sistema pot accedir a aquests fitxers.
Un administrador del sistema pot definir un treball cron mitjançant l'ordre següent:
$nano /etc/crontabAquí teniu la sintaxi del treball a / etc / crontab dossier:
# min hr dayofmonth mes dayofweek ordre de nom d'usuari* * * * *usuari1ifconfig
Feines de cron específiques de l'usuari
Els treballs cron específics de l'usuari es troben a / var / spool / cron / crontabs directori. Tot i que podeu editar aquests treballs manualment, es recomana editar-los mitjançant l'ordre crontab -e.
Un usuari estàndard pot definir un treball cron mitjançant l'ordre següent:
$crontab-IPer exemple, si heu iniciat la sessió com a usuari de prova, l'execució de l'ordre crontab -e editarà el fitxer crontab per a l'usuari de prova. De la mateixa manera, si heu iniciat la sessió com a usuari root, l'ordre crontab -e editarà el fitxer crontab per a l'usuari root.
Emeteu l'ordre següent a Terminal per editar el fitxer crontab per a qualsevol altre usuari:
$suocrontab-u <nom d'usuari> -IPer exemple, si heu iniciat la sessió com a usuari test1 i voleu editar el fitxer crontab per a l'usuari test2, l'ordre seria:
$suocrontab-uprova2-IAquí teniu la sintaxi del treball cron que es pot afegir al fitxer crontab:
# m h dayofmonth month dayofweek command* * * * * ifconfig
Podeu veure en treballs específics de l'usuari que no hi ha cap nom d'usuari arxivat.
Ordres de Crontab
L'ordre crontab s'utilitza per editar, llistar i eliminar els treballs cron:
- crontab -e Per editar el fitxer crontab de l'usuari actual
- crontab -l Per mostrar el contingut del fitxer crontab
- crontab -u [nom d'usuari] Per editar el fitxer crontab de qualsevol altre usuari
- crontab -r Per eliminar el fitxer crontab de l’usuari actual
- crontab -i Per mostrar una sol·licitud abans d’eliminar el fitxer crontab de l’usuari actual
Programació d’un treball amb Cron
Amb Cron, podeu executar un treball a una hora, data i intervals específics amb una unitat mínima en minuts, és a dir, podeu executar un treball cada minut.
Per programar una tasca amb cron, obriu el fitxer crontab mitjançant el mètode comentat a la secció anterior. Un cop hàgiu obert el fitxer crontab, se us demanarà que seleccioneu un editor de text. Escriviu un número per triar l'editor de text que preferiu. Desplaceu-vos cap avall fins a la part inferior del fitxer i afegiu tasques a la sintaxi descrita anteriorment. Cada línia d'un fitxer especifica una ordre. Les cinc primeres entrades de la línia especifiquen l'hora programada i l'última especifica quina ordre o script s'ha d'executar.
Exemple:
La següent línia del fitxer crontab programarà el treball cron per executar l'ordre / script cada 30 minuts de les darreres 5 hores de cada dia de la setmana de dilluns a dissabte.
* /30 5 * * 1-6comandament/guió
Minuts
En aquest camp, especifiquem els minuts en què volem que s’executi l’ordre. S'especifica de 0 a 59. El * d'aquest camp significa executar el treball cada minut. A la línia de crontab anterior, el * / 30 indica al treball cron que executi l'ordre / script especificat cada 30 minuts.
Hores
En aquest camp, especifiquem les hores en què volem que s’executi l’ordre. S'especifica de 0 a 23. El * d'aquest camp significa executar el treball cada hora. A la línia de crontab anterior, el valor 5 indica al treball cron que executi l'ordre / script especificat cada cinc hores.
Dia del mes
En aquest camp, especifiquem els dies particulars dels mesos en què volem que s’executi l’ordre. S'especifica de l'1 al 31. El * en aquest camp significa cada dia. A la línia de crontab anterior, el * indica al treball cron que executi l'ordre / script especificat cada dia.
Mes de l'any
En aquest camp, especifiquem els mesos particulars en què volem que s’executi l’ordre. S'especifica de l'1 al 12. El * en aquest camp significa cada mes. A la línia de crontab anterior, el * indica al treball cron que executi l'ordre / script especificat cada mes.
Dia de la setmana
En aquest camp, especifiquem els dies concrets de la setmana en què volem que s’executi l’ordre. S'especifica de 0 a 6 de diumenge a dissabte (0 per al diumenge i 6 per al dissabte). El * en aquest camp significa tots els dies d'una setmana. A la línia de crontab anterior, el * indica al treball cron que executi l'ordre / script especificat cada dia en una setmana.
Exemples de Cron Jobs
Aquests són alguns exemples de treballs cron:
Executeu un treball cron cada 15 minuts
Per programar un treball cron cada 15 minuts, afegiu la línia següent al fitxer crontab:
* /15 * * * *comandament/guióExecuteu un treball cron a les 5 del matí cada dia
Per programar un treball cron a les 5 del matí cada dia, afegiu la línia següent al fitxer crontab:
0 5 * * *comandament/guióExecuteu un treball cron a les 5 de la tarda cada dia
Per programar un treball cron a les 17 hores cada dia, afegiu la línia següent al fitxer crontab:
0 17 * * *comandament/guióExecuteu una feina cron a les 9 del matí del primer dia de cada mes
Per programar un treball cron a les 9 del matí el primer dia de cada mes, afegiu la línia següent al fitxer crontab:
0 9 1 * *comandament/guióExecuteu un treball cron cada hora cada 15 de març
Per programar un treball cron cada hora cada 15 de març, afegiu la línia següent al fitxer crontab:
0 * 15 3 *comandament/guióExecuteu un treball cron cada 5 hores
Per programar un treball cron cada 5 hores, afegiu la línia següent al fitxer crontab:
0 * /5 * * *comandament/guióExecuteu un treball cron cada 15 minuts
Per programar un treball cron cada 15 minuts, afegiu la línia següent al fitxer crontab:
* /15 * * * *Utilització de cordes
Les següents cadenes també es poden utilitzar per definir un treball:
- @hourly: Per executar un treball una vegada cada hora, és a dir, 0 * * * *
- @midnight: Executar un treball un cop al dia, és a dir, 0 0 * * *
- @ cada dia: igual que mitjanit
- @ setmanal: Per executar un treball una vegada a la setmana, és a dir, 0 0 * * 0
- @mensual: Per executar una feina un cop al mes, és a dir, 0 0 1 * *
- @anualment: Executar un treball una vegada a l'any, és a dir, 0 0 1 1 *
- @anyly: igual que @anualment
- @ reinici: Per executar un treball una vegada a cada inici
Per exemple, per executar un script o una ordre cada setmana, l'entrada al fitxer crontab seria:
@ordre setmanal/guióDirectoris Cron predefinits
Hi ha alguns directoris cron predefinits a Linux on els scripts emmagatzemats s’executen automàticament. Si posem algun script sota aquests directoris, s'executarà automàticament en el moment configurat.
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
Per exemple, per executar un script un cop al mes, haureu de col·locar-lo a /etc/cron.monthly.
Veure feines de Cron
Veure feines de l'usuari actual
Utilitzeu l'ordre següent per veure tots els treballs cron programats per a l'usuari actual:
$crontab-laVeure feines per als usuaris root
Per veure tots els treballs programats de l'usuari root, emeteu l'ordre següent a Terminal:
$gat /etc/crontabHaureu d'iniciar la sessió com a usuari root o executar l'ordre com a sudo.
Veure feines dels altres usuaris
Per veure tots els treballs programats d'un usuari específic, emeteu l'ordre següent a Terminal substituint-la pel nom d'usuari real:
$suocrontab-u <nom d'usuari> -laPer executar aquesta ordre, necessitareu privilegis sudo.
Veure feines cron per hora
Per veure tots els treballs cron que estan configurats per executar-se cada hora, emeteu l'ordre següent a Terminal:
$ls -la /etc/cron.hourlyVeure feines cron diàries
Per veure tots els treballs cron que estan configurats per executar-se diàriament, emeteu l'ordre següent a Terminal:
$ls -la /etc/cron.daily/Veure feines de cron setmanals
Per veure tots els treballs cron que estan configurats per executar-se setmanalment, publiqueu l'ordre següent a Terminal:
$ls -la /etc/cron.weekly/Veure feines cron mensuals
Per veure tots els treballs cron que estan configurats per executar-se mensualment, emeteu l'ordre següent a Terminal:
$ls -la /etc/cron.mensualment/Feu una còpia de seguretat de totes les feines de Cron
Es recomana guardar una còpia de seguretat de tots els treballs cron en un fitxer per poder recuperar-los en cas de supressió. Per fer una còpia de seguretat de tots els treballs actuals, utilitzeu l'operador de redirecció per redirigir la sortida de crontab -l a un fitxer.
$crontab-la >backup_cron.txtEliminació de totes les feines Cron programades
Per eliminar tots els treballs cron programats, utilitzeu el senyalador -r de la següent manera:
$crontab-rPermís Cron
Podem limitar l'accés a l'ordre crontab mitjançant dos fitxers: / etc / cron.allow i / etc / cron.deny.
- /etc/cron.allow - Afegiu usuaris (un per línia) als quals vulgueu permetre l'accés a les ordres del crontab. Aquests usuaris poden executar feines de programació.
- /etc/cron.deny - Afegiu usuaris (un per línia) als quals vulgueu negar l'accés a les ordres del crontab. Aquests usuaris no poden executar feines programades.
Generadors de sintaxi Crontab
Hi ha alguns llocs web que permeten generar sintaxi per a crontabs. Aquests llocs web faciliten la generació d’expressions de crontab sense haver de recordar la sintaxi. Tot i que hi ha diversos llocs web disponibles per a generadors de sintaxi, com ara crontabgenerator.com , crontab-generator.org , i cronmaker.com . El que més prefereixo i que he trobat útil és el crontab.guru . Basat en l’entrada de l’usuari, genera una expressió crontab que podeu copiar-enganxar al fitxer crontab.
Conclusió
En aquest tutorial, hem explicat els conceptes bàsics dels treballs cron, la seva sintaxi i com configurar-lo. També hem debatut sobre com veure els treballs cron, crear una còpia de seguretat i eliminar-los si ja no cal.