Cron Jobs: tutorial complet per a principiants

Cron Jobs Complete Beginners Tutorial



Cron és la utilitat més útil en un sistema operatiu similar a Linux o UNIX que permet executar ordres o scripts en una planificació determinada sense cap intervenció de l'usuari. Les ordres i els scripts programats també es denominen com a tasques cron. S’utilitza principalment per automatitzar feines recurrents com executar còpies de seguretat programades, netejar fitxers temporals, manteniment del sistema i altres tasques recurrents. És similar al Task Scheduler del sistema operatiu Windows.

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:



  1. Asterisc (*): Per especificar tots els valors possibles per a un camp
  2. Guió (-): Per a s especificar un ventall de valors
  3. La coma (,): Per especificar una llista de valors
  4. 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/crontab

Aquí 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-I

Per 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> -I

Per 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-I

Aquí 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:

  1. @hourly: Per executar un treball una vegada cada hora, és a dir, 0 * * * *
  2. @midnight: Executar un treball un cop al dia, és a dir, 0 0 * * *
  3. @ cada dia: igual que mitjanit
  4. @ setmanal: Per executar un treball una vegada a la setmana, és a dir, 0 0 * * 0
  5. @mensual: Per executar una feina un cop al mes, és a dir, 0 0 1 * *
  6. @anualment: Executar un treball una vegada a l'any, és a dir, 0 0 1 1 *
  7. @anyly: igual que @anualment
  8. @ 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-la

Veure feines per als usuaris root

Per veure tots els treballs programats de l'usuari root, emeteu l'ordre següent a Terminal:

$gat /etc/crontab

Haureu 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> -la

Per 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.hourly

Veure 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.txt

Eliminació de totes les feines Cron programades

Per eliminar tots els treballs cron programats, utilitzeu el senyalador -r de la següent manera:

$crontab-r

Permí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.