Executeu un treball Cron cada minut

Run Cron Job Every Minute



Si voleu executar un programa o script en segon pla a Linux, el treball cron és molt important. Amb l'ajut de treballs cron, podeu executar un programa o script en segon pla després d'un determinat interval de temps.

Vegem alguns exemples reals de feines cron.







  • Diguem que teniu un lloc web i voleu enviar un correu electrònic a tots els usuaris del vostre lloc web cada dia. Tot el que heu de fer és escriure un script d’enviament de correu electrònic i configurar un treball cron per executar-lo cada dia.
  • Posem per cas que teniu una agència de publicitat i voleu recordar a tots els anunciants que tenen un saldo inferior a 5 USD. Tot el que heu de fer és escriure un script que comprovi el saldo de tots els anunciants i, quan sigui inferior a 5 $, enviarà una notificació al número de mòbil o al correu electrònic de l’anunciant. A continuació, configureu un treball cron per executar l'script cada 5 a 10 minuts o cada hora.

Hi ha molts altres usos de treballs cron a Linux.



En aquest article, us mostraré com executar feines cron cada minut a Linux. Faré servir Debian 9 Stretch per a la demostració. Però podeu utilitzar qualsevol distribució moderna de Linux que vulgueu. Comencem.



A Linux no cal ser-ho arrel per executar feines cron. Podeu executar feines cron com qualsevol usuari. Tots els usuaris de Linux poden utilitzar un fitxer crontab per executar el seu propi conjunt de treballs cron.





Per defecte, un usuari no en té cap crontab arxiu a Linux. Podeu crear un fitxer crontab fitxer amb l'ordre següent:

$crontab-I



Si executeu aquesta ordre per primera vegada, se us ha de demanar que escolliu un editor de text de la llista. Triaré nano , el predeterminat. Podeu escollir la que us agradi. Un cop hàgiu acabat, premeu .

El crontab el fitxer s'hauria de crear (si encara no està disponible) i obrir-lo amb el vostre editor de text preferit. Ara podeu afegir les vostres pròpies tasques cron al final d’aquest fitxer i, un cop us agradi, només cal desar-lo i sortir de l’editor de text.

Sintaxi d'executar una ordre cada minut:

La sintaxi de crontab el fitxer és el següent:

minut hora dayOfMonth mes dayOfWeek commandToRun

Aquí,

  • minut pot ser 0 a 59 .
  • hores també pot ser 0 a 59 .
  • dayOfMonth pot ser 1 a 31 .
  • mes pot ser 1 a 12 .
  • dayOfWeek pot ser 0 a 7 . 0 i 7 vol dir diumenge, 1 vol dir dilluns, 2 significa dimarts, etc.

Per executar un commandToRun cada minut, hauríeu d'escriure-la al fitxer crontab arxiu de la següent manera:

* * * * *commandToRun

Execució d'un treball Crob cada minut:

Ara que coneixem les teories, afegim un guió senzill timer.sh fins al crontab fitxer i veure com gestionar-lo.

A la timer.sh script, només tinc les següents línies de codis. Tot el que fa és crear un fitxer nou /home/shovon/bin/timer.log (si encara no existeix) i hi afegeix la sortida de l'ordre date.

Ara afegim l'script al nostre crontab i deixeu-lo córrer cada minut amb la següent línia:

* * * * * /a casa/pala/sóc/timer.sh

Un cop desat el fitxer crontab fitxer i sortiu de l'editor de text, el nou crontab s'hauria d'instal·lar el fitxer.

Un cop passat un minut, apareix un fitxer nou timer.log es crea al directori desitjat, tal com es pot veure a la secció marcada de la captura de pantalla següent.

Des del timer.log fitxer de registre, és obvi que l'script timer.sh corre cada minut.

Recuperació d'errors dels treballs Cron:

Per detectar errors d'un treball cron, podeu enviar-los a un fitxer error.log fitxer i sortides normals a access.log fitxer per exemple. Per descomptat, podeu anomenar els fitxers com vulgueu.

Per demostrar-ho, he modificat el meu guió timer.sh una mica. Ara els errors s’envien a error.log arxiu al fitxer / home / pala / paperera directori i les sortides s’envien a access.log al / home / pala / paperera directori.

En un primer moment / tmp / he_ha_be_here el fitxer no existeix, així que obtinc l'error a error.log com podeu veure.

El access.log el fitxer està buit en aquest moment.

Ara vaig a crear el fitxer / tmp / he_ha_be_here

I, com podeu veure, la sortida es troba a access.log arxiva ara.

Si voleu, podeu redirigir la sortida i els errors al mateix fitxer de la següent manera:

Com podeu veure, les sortides STDIN i STDERR s'envien al fitxer out.log dossier.

Assegurar-se que l'últim treball s'hagi acabat d'executar abans de tornar a executar el treball:

Perquè això funcioni, podeu crear un fitxer temporal just després d’iniciar el treball i eliminar-lo just abans que acabi. A continuació, podeu comprovar si el fitxer temporal existeix abans d’iniciar la tasca. Si ho fa, podeu sortir del treball i executar-lo només quan el fitxer temporal no estigui disponible.

Aquest senzill guió ho fa exactament.

Com podeu veure, el timer.pid es crea el fitxer.

Llegint el access.log El fitxer demostra que el treball cron no s'executa abans que s'acabi d'executar el treball cron anterior. Com podeu veure, va funcionar a les 01:32:01 i la propera vegada hauria d’haver estat a les 01:33:01, però no va ser així. En lloc d'això, va funcionar a les 01:35:01, uns 3 minuts després.

Organització de les sortides de treballs Cron per a la depuració fàcil:

Podeu formatar les sortides molt bé per facilitar la depuració del vostre treball cron.

Un exemple de com es pot fer es dóna al següent script.

Com podeu veure, les sortides, els errors i els missatges d’èxit s’imprimeixen molt bé al fitxer de registre.

Podeu fer coses sorprenents amb treballs cron i scripts de shell. He demostrat algunes de les idees aquí. Però el cel és el vostre límit. No dubteu a experimentar amb qualsevol idea que tingueu. Gràcies per llegir aquest article.