Com programar tasques a Linux amb Cron i Crontab

Com programar tasques a Linux amb Cron i Crontab

Sabia vostè que Blade Runner s'estableix el 2019? D'aquí a tres anys! Per no parlar Tornar al futur 2 , on viatgen en el temps fins al 2015. Tot i això, no tenim cotxes voladors i no hi ha cap rèplica entre nosaltres (pel que sé).





És fàcil sentir-se decebut amb la tecnologia actual quan la comparem amb representacions fictícies del futur. Tot i això, avui en dia els nostres telèfons, ordinadors i fins i tot cases poden fer coses increïbles. La capacitat d’automatitzar tasques n’és una.





Tots els usuaris de Linux es poden beneficiar de la planificació de tasques, ja siguin relacionades amb el sistema (com netejar registres antics i actualització de paquets ) o servir l’usuari (comprovar el correu electrònic, descarregar podcasts ...). Els usuaris de Windows tenen Task Scheduler des del Windows 95. La utilitat que fa el mateix treball a Linux es diu cron i aquí explicarem com utilitzar-lo.





com aconseguir imei a l'iPhone

Què és Cron?

Cron és un servei del sistema que s’executa en segon pla, comprova les tasques programades i les executa si en troba alguna. Les tasques, també anomenades 'feines cron', es defineixen en fitxers de configuració especials (crontabs), que cron analitza cada minut. Es poden trobar diverses versions de cron a diferents distribucions de Linux. Per exemple, es diu la forquilla de cron de Fedora amic , i també n’hi ha fcron , bcron , i dcron . Alguns tenen funcions addicionals, mentre que altres se centren més en la seguretat, però tots es basen en la mateixa idea.

Aquesta guia està escrita per a vixie-cron, que és la versió més estesa de cron i la que trobareu a Ubuntu i els seus derivats. Tot i que la majoria d’instruccions també s’apliquen a altres implementacions de cron, és possible que hi hagi petites diferències, així que consulteu els seus manuals si decidiu canviar.



Què és un Crontab?

Si teniu ganes de gestionar el vostre temps, probablement tingueu algun tipus de calendari: una aplicació o, com a mínim, un tros de paper. Crontab s’assembla molt al calendari de l’ordinador. Conté la informació sobre les tasques programades, indicant a cron quines ordres s’executaran a quina hora.

De fet, hi ha diversos crontabs al vostre sistema. Tots els usuaris tenen el seu propi crontab, inclòs root (l'administrador). Els crontabs d’usuaris s’emmagatzemen a





/var/spool/cron/crontabs/

. El

crontab -l

L'ordre mostrarà el fitxer crontab de l'usuari actual. Podeu comprovar el crontab arrel amb





sudo crontab -l

.

A més, hi ha el fitxer crontab del sistema

/etc/crontab

que s’utilitza per a tasques a tot el sistema. Normalment adopten la forma d’escriptures executables de propietat arrel ubicats a

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, i

/etc/cron.monthly/

carpetes i, en algunes distribucions, el fitxer

/etc/cron.d/

carpeta també. En termes generals, no hauríeu de fer front a aquestes tasques, ja que la majoria d’elles es creen automàticament mitjançant aplicacions instal·lades.

Com programar tasques amb Cron

Sembla senzill: per programar tasques, només cal afegir-les al vostre crontab. Com que el crontab és un fitxer de configuració especial, no es recomana editar-lo manualment. En el seu lloc, utilitzeu el fitxer

crontab -e

comandament. Per editar els crontabs de root o d'altres usuaris, executeu l'ordre amb privilegis administratius i afegiu el seu nom d'usuari després de l'opció -u:

sudo crontab -u root -e
sudo crontab -u username -e

El fitxer crontab té dues seccions. El primer conté variables d'entorn que es configuren automàticament. Podeu canviar amb seguretat les variables PATH, HOME i SHELL i modificar la variable MAIL.

La segona part del fitxer és el 'calendari' real amb les vostres tasques programades. Cada tasca ocupa una línia (fila) a la taula, amb columnes que representen els valors següents:

Per programar amb èxit les tasques, heu de conèixer una mica la sintaxi del crontab:

  • Els números han de ser enters (nombres enters) i podeu utilitzar l'asterisc (*) en qualsevol de les columnes com a comodí, que significa 'cada minut / dia / mes ...'.
  • A la columna 'Dia del mes', tingueu cura de no establir una data que no es produeixi al mes especificat a la columna 'Mes' (per exemple, el 30 de febrer).
  • Tant les columnes 'Mes' com 'Dia de la setmana' accepten noms curts de mesos i dies, respectivament, i distingeixen entre majúscules i minúscules.
  • A la columna 'Dia de la setmana', el 0 i el 7 representen diumenge. La columna 'Hora' requereix el format 'hora militar' (24 hores), però no podeu fer servir el número 24; en lloc d'això, 0 significa que és a les 12 del matí. a 0 en lloc d'1.
  • Els segons no s'admeten, de manera que no podeu programar una tasca en un segon concret.

El que podeu fer és programar intervals de temps inclosos mitjançant un guionet (entre 14 i 22 a 'Hores' executarà la tasca contínuament de 14 a 22 h), o executar una sola tasca diverses vegades definint una llista separada per comes (1, 3,5 a 'Dia de la setmana' executarà la tasca els dilluns, dimecres i divendres).

Mentrestant, els valors dels passos es representen mitjançant una barra inclinada cap endavant (/), que indica la quantitat de salts dins d'un interval; per exemple, 3-20 / 3 sota 'Hores' executarà la tasca cada tres hores de 3 a.m. a 8 p.m. Això és útil quan voleu repetir tasques cada X hores, ja que podeu combinar un asterisc i un pas (* / X). Podeu combinar intervals amb llistes i passos amb intervals sempre que feu servir números. Dit d'una altra manera, no es permeten combinacions com 'gener-mar' o 'dimarts, divendres-diumenge'.

Com a alternativa, en lloc d’establir un valor per a cada columna, podeu escriure @weekly, @yearly, @monthly, @daily o @hourly al principi d’una fila, seguit d’una ordre. Planificades així, les tasques s’executaran en la primera instància possible, de manera que @weekly s’executaria a mitjanit del primer dia de la setmana. Si voleu executar una tasca immediatament quan el sistema (re) s'inicia, utilitzeu l'ordre @reboot.

En aquest exemple, hem programat una còpia de seguretat cada dia a les 08:20 i a les 20:20. El fons de pantalla canvia automàticament cada tres dies a les 19:00 i un script comprovarà si hi ha podcasts nous cada dilluns a les 10:20 i a les 20:20. El 25 de març s’estableix un recordatori d’aniversari i s’executa cada 30 minuts dins del termini especificat. Finalment, un script comprova el correu electrònic cada 15 minuts de 8 a 20, però només els dies laborables. Podeu organitzar el vostre crontab amb espais i pestanyes entre columnes, però no dins d'elles (no poseu espais entre comes, guions i barres incloses).

Si tot això sembla massa complicat, no us preocupeu, sempre podeu confiar en Internet. Eines com Generador de Crontab , Crontab.guru , i Corntab us ajuden a crear tasques cron sense conèixer cap sintaxi crontab. Us mostren quan s'executarà el treball següent i proporcionen plantilles per a expressions d'ús habitual. Crontab.guru és el millor del grup, ja que us permet provar la sintaxi de crontab en directe, de manera que pugueu veure immediatament com afectaran els vostres canvis a la programació.

Com comprovar si s’executen feines Cron

Se suposa que Cron s’executa tranquil·lament en segon pla i us permet treballar sense molèsties mentre es fa càrrec de les vostres tasques. Però, com es pot assegurar que funcioni realment?

Cron té una funció de notificació de correu electrònic integrada, però això requereix configurar com a mínim un servidor de correu local senzill. No hi ha molts usuaris domèstics que estiguin disposats a configurar-ho i no hi ha moltes distribucions per defecte (per exemple, Ubuntu no). La forma més ràpida de consultar cron és escanejar el registre del sistema amb aquesta ordre:

cat /var/log/syslog | grep -i cron

L’opció -i fa que la nostra consulta no distingeixi entre majúscules i minúscules. És possible que cron tingui el seu propi fitxer de registre en algun lloc

/var/log/

Mireu-hi si aquesta ordre no produeix resultats útils.

Si heu de desar la sortida d'un treball cron concret, podeu redirigir-lo a un fitxer. Proporcioneu el camí i el nom del fitxer a l'última columna del vostre crontab, després de l'ordre que voleu executar:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

L'ús d'un símbol> únic sobreescriurà el fitxer cada vegada que s'executi l'ordre. Per evitar-ho, utilitzeu >> en lloc seu: afegeix la sortida al fitxer existent.

Què passa si Cron no funciona?

Pot passar que hàgiu afegit algunes tasques, comprovat els registres del sistema i comprovat que no s’executen com haurien de fer-ho. A continuació, es detallen algunes coses que cal tenir en compte (i anar amb compte) en intentar solucionar el problema.

El servei cron s’executa?

Com ja sabeu, el dimoni cron hauria d’executar-se en segon pla. Assegureu-vos que realment és així. El servei es diu crond o simplement cron.

Per a distribucions que utilitzen systemd:

systemctl status cron

Per a distribucions que utilitzen Upstart:

service cron status

Si la vostra distribució utilitza el mètode d'inici del sistema V antic, enumereu tots els serveis amb:

el meu paquet d'Amazon no va arribar mai, però diu entregat
initctl list

i veure si hi apareix cron.

Fins i tot se us permet tenir un fitxer crontab?

Comproveu el vostre

/etc

carpeta per als fitxers anomenats

cron.allow

i

cron.deny

. A Ubuntu no n’hi hauria d’existir, cosa que significa que tots els usuaris poden gestionar tasques cron. Tanmateix, si n'hi ha

com desactivar els vídeos recomanats a YouTube
cron.allow

, ha de contenir el vostre nom d’usuari. Per contra, si el fitxer

cron.deny

el fitxer existeix, el vostre nom d’usuari no hi hauria d’estar. Sortint del

cron.deny

fitxer en blanc significa que només root i usuaris que figuren a

cron.allow

pot tenir fitxers crontab.

Les vostres variables estan configurades correctament?

Crontab estableix automàticament la variable SHELL en

/bin/sh

. No obstant això, si la closca que trieu és el peix o bash, hauríeu de canviar la variable SHELL

. De la mateixa manera, la variable PATH conté només uns quants directoris per defecte. Aquí és on el crontab busca ordres de Linux. Si el vostre treball cron no funciona, és possible que el crontab no vegi l'ordre que heu utilitzat. Per evitar-ho, afegiu directoris que contenen les ordres a la variable PATH, separats per dos punts:

PATH = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Si no voleu editar-ho al vostre crontab, podeu definir aquestes variables a l'script que vulgueu executar com a tasca cron.

El format del vostre crontab és puntual?

La sintaxi del Crontab no és exactament una navegació fluida. Fins i tot si ho verifiqueu amb les eines en línia esmentades anteriorment, un error menor encara podria evitar que cron executés les vostres feines. Aneu amb compte de:

  • afegiu una línia buida al final del fitxer crontab
  • escapa del signe% amb una barra invertida si la teva ordre ho inclou
  • escriviu comentaris com a línies separades que comencen per #. No escriviu comentaris a la mateixa línia que les variables d'entorn ni al costat d'ordres de treball cron.

De debò heu d’utilitzar el terminal?

Absolutament no. Els usuaris de KDE poden programar feines cron amb KCron, accessible des de Configuració del sistema> Planificador de tasques mòdul. Amb una interfície senzilla que us permet triar i ajustar tot en uns pocs clics del ratolí, KCron és un plaer d’utilitzar.

Si preferiu el GNOME, llavors Programació del GNOME és per a tu. L’enfocament és similar, tot i que és esperable que la interfície sigui lleugerament diferent. Ofereix un mode avançat per a modificacions de gra fi i inclou un applet de panell des del qual podeu gestionar les tasques directament.

Haureu de ser conscients d'altres solucions, com ara Crontab-UI i Minicron . Són més adequats per a usuaris que gestionen diverses màquines i treballs cron i una de les seves funcions més interessants és la interfície basada en web.

Hi ha alternatives Cron?

Tot i que cron és pràcticament el programador de tasques estàndard per a Linux, certament no és l’únic. El al comandament és perfecte per a tasques ràpides i puntuals que es poden programar des de la línia d'ordres, sense fitxers de configuració especials. Si en necessiteu més, n’hi ha GNUbatch , que introdueix la noció de dependència. Amb GNUbatch, podeu establir condicions específiques per a cada treball o fer que una tasca programada depengui d’una anterior. Amb això es pot aconseguir alguna cosa similar temporitzadors del sistema . Tot i que és menys pràctic de configurar que el cron, els temporitzadors systemd poden recordar si una tasca va perdre la seva programació mentre l’ordinador estava apagat i executar-la la propera vegada que s’encengui.

Això és una cosa que el cron no pot fer sol. Com a tal, és adequat per a servidors i ordinadors que s’executen constantment, però no executarà cap tasca programada mentre l’ordinador estava apagat. Aquí és on anacron entra en joc. Tècnicament no és una 'alternativa' ni un substitut de cron. En lloc d'això, anacron complementa cron i s'hauria d'utilitzar al costat, com és el cas de moltes distribucions de Linux, inclosos els productes basats en Ubuntu i Ubuntu. Anacron registra quan es va executar per última vegada una tasca i comprova si hi ha hagut casos perduts mentre el sistema estava apagat. Els executarà quan torneu a engegar l'ordinador, però totes les tasques es poden executar només una vegada al dia.

Algunes versions de cron, com fcron, ofereixen les funcions d'anacron per defecte. És possible que els usuaris avançats vulguin mirar-ho Hcron o bé SuperCron , que aporten moltes millores a les funcions cron bàsiques, però també són una mica difícils de gestionar.

I tu? Com organitzeu les vostres tasques digitals? Quines tasques programes a Linux? Comparteix les teves històries i consells per utilitzar cron als comentaris.

Crèdit de la imatge: tauler d’horaris de Gonzalo Aragon a través de Shutterstock

Compartir Compartir Tweet Correu electrònic 12 llocs de vídeo que són millors que YouTube

Aquí hi ha alguns llocs de vídeo alternatius a YouTube. Cadascun ocupa un nínxol diferent, però val la pena afegir-lo als vostres marcadors.

Llegiu a continuació
Temes relacionats
  • Linux
  • Linux
Sobre l'autor Ivana Isadora Devcic(24 articles publicats)

Ivana Isadora és escriptora i traductora independent, amant de Linux i fangirl del KDE. Admet i promou programari lliure i de codi obert, i sempre busca aplicacions innovadores i fresques. Esbrineu com posar-vos en contacte aquí .

Més de Ivana Isadora Devcic

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us