Manual Crontab – Programarea sarcinilor în Linux

A îndeplini mereu și iar aceleași sarcini, fie zilnic, săptămânal sau lunar, este o sarcină care, în timp, obosește și degenerează, în funcție de complexitatea ei, în care o lăsăm deoparte. Soluția la această problemă este să o automatizezi cât mai mult posibil. Exact ca ferestre din ne permite să automatizăm anumite sarcini, Linux ne oferă și această opțiune prin Crontab, dar nu exclusiv.

Dacă dorim să automatizăm funcționarea Linux, fie că este vorba de a face o copie de rezervă, de a genera rapoarte, de a modifica configurația sau pentru orice altceva, soluția este să folosim Crontab în combinație cu Cron, deoarece, spre deosebire de Windows, avem nevoie de două aplicatii minime.

Manualul Crontab

Ce este Crontab?

Crontab este un fișier text în care automatizările sunt create pe baza unei serii de parametri, adică un fișier text citit de Cron . Ambele aplicații sunt disponibile nativ în majoritatea celor mai comune distribuții Linux, așa că nu este necesar să instalăm niciun depozit pe computerul nostru pentru a le putea folosi.

Crontab ne oferă o serie de scripturi, câte unul pe linie, care ne permit să personalizăm timpul exact în care dorim pentru a efectua una sau mai multe sarcini și repetările lor în timp. De fapt, numele său derivă din cuvântul grecesc Cronos , ceea ce înseamnă timp. Fiecare script conține informații despre data exactă la care ar trebui să fie executat, dată care este indicată printr-o serie de numere. Pentru eșantion, un buton. Următorul script va rula nfsfind în fiecare duminică la 5:30 dimineața

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

Primele două numere reprezintă ora în care va fi executată comanda, primul număr fiind minutul și al doilea orele. Formatul de timp folosit de Crontab este de 24 de ore, deci dacă dorim să îndeplinim sarcina la 5 după-amiaza, acesta ar fi numărul 17. Asteriscurile reprezintă toate valorile, în timp ce numărul 0 corespunde duminicilor.

Nu confundați Cron cu Crontab

În timp ce Crontab ne permite să realizăm sistemul nostru automatizări , acestea sunt executate, deși nu exclusiv, cu aplicația Cron, o aplicație care rulează în fundal și care realizează toate sarcinile pe care le-am configurat anterior în Crontab. Această aplicație folosește timpul sistemului nostru pentru a le efectua, așa că este important, dacă folosim o mașină virtuală, ca atât timpul mașinii invitate, cât și cel al computerului nostru să fie întotdeauna același, deoarece, în caz contrar, timpul programat nu va fi corect.

Cron citește conținutul fișierului Crontab în fiecare minut, așa că îl putem edita în orice moment pentru a efectua sarcini pe care dorim să le realizăm în aceeași sesiune, fără a fi nevoită să forțeze aplicația să-și citească din nou conținutul pentru a găsi noi scripturi de rulat.

Nu toți utilizatorii au capacitatea de a crea fișiere Crontab pentru a automatiza sarcinile sistemului. Administratorul de sistem are posibilitatea de a permite sau de a refuza această opțiune prin fișierul cron.allow sau respectiv cron.den, fișiere găsite în /etc/cron.do /etc/ în funcție de versiunea distribuției Linux pe care o avem. instalat pe computerul nostru.

Cum să automatizezi sarcinile în Linux

După cum am menționat mai sus, scripturile Crontab încep cu data la care dorim să fie executate, urmată de comandă. Sintaxa Crontab este următoarea.

Managementul programului

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Minut, acesta poate fi de la 0 la 59
  • Timpul, așa cum am menționat, Crontab folosește timpul de 24 de ore, astfel încât intervalul de numere este de la 0 la 23.
  • Ziua lunii, nu este prea mult mister, în acest parametru deoarece trece de la 1 la 31.
  • Luna, de la 1 la 12
    • ianuarie 1
    • februarie 2
    • Martie 3
    • aprilie 4
    • 5 mai
    • iunie 6
    • iulie 7
    • august 8
    • Septembrie 9
    • octombrie 10
    • Noiembrie 11
    • 12 decembrie.
  • Ziua săptămânii, de la 0 la 6, duminica fiind numărul 0, deși unele versiuni de Crontab permit și utilizarea numărului 7. În acest fel, codul pentru zilele săptămânii este
    • 0 duminică
    • 1 luni
    • 2 marti
    • 3 miercuri
    • 4 joi
    • 5 vineri
    • Sâmbătă 6

Dar, în plus, putem folosi și asteriscul (*) pentru a specifica toate valorile posibile ale unei variabile. Dacă dorim să stabilim mai multe valori, o putem face prin virgulă (,) sau printr-un interval de valori separându-le cu o cratimă (-). De asemenea, putem seta diferiți pași cu „/”.

Dacă încă nu este foarte clar, atunci vă arătăm codurile de timp pe care le putem folosi pentru a efectua sarcini periodic în funcție de periodicitatea acestora

  • 0 * * * * Folosind codul de timp, scriptul va fi executat în fiecare oră pe oră.
  • 0 0 * * * În fiecare zi, scriptul va fi executat o singură dată
  • 0 0 * * 0 Scriptul rulează o dată pe săptămână
  • 0 0 1 * * Se va executa o dată pe lună
  • 0 0 1 1 * Scriptul va fi executat o dată pe an

Odată ce suntem clari despre cum funcționează programarea sarcinilor în Crontab, primul lucru pe care îl vom face este să creăm fișierul în care vom crea toate procesele pe care dorim să le automatizăm folosind următoarea comandă

crontab nombre-archivo

Dacă nu dorim să creăm unul nou, sau l-am creat deja și dorim să îl edităm, folosim această comandă

crontab -e

Dacă vrem să ștergem fișierul Crontab creat

crontab -d

Cu următoarea comandă, putem enumera toate sarcinile incluse în fișierul Crontab

crontab -d

Administratorii de sistem pot limita utilizarea automatizărilor sistemului prin editarea fișierelor cron.allow sau cron.den, fișiere găsite în /etc/cron.d/ sau /etc/ dacă nu le-am modificat anterior locația.

automatizează sarcinile

Pentru a edita fișierul Crontab pe care l-am creat, vom folosi editorul de text inclus în toate distribuțiile Linux, deși îl putem edita și direct din Crontab adăugând variabila -e.

nano nombrearchivo

Introducem codul numeric insotit de asteriscuri si scriptul pe care vrem sa-l executam. În continuare, trebuie să îi dăm lui Cron permisiuni pentru a-l rula, altfel nu va ști de existența sa și nu va putea niciodată să-l ruleze. Pentru a face acest lucru, vom folosi comanda

chmod ugo+x nombrearchivo

Inițial, utilizarea Crontab pentru automatizarea sarcinilor nu pare a fi deloc ușoară și amintește de nevoia Linux (aproape obișnuită) de a recurge la linia de comandă pentru practic orice, limitând astfel mai mulți utilizatori să adopte Linux ca sistem de operare într-o zi- de azi. .

Programatorul de sarcini Windows folosește o interfață grafică care nu este foarte ușor de utilizat fără cunoștințele necesare, totuși, este mult mai intuitivă decât cea oferită de Linux prin linia de comandă.

Exemplu de lucru Crontab și Cron

Primul lucru pe care trebuie să-l facem pentru a automatiza sarcinile în Linux este să creăm fișierul în care vom include toate comenzile pe care dorim să fie executate pe computer în momentul în care vom configura. În acest exemplu, vom crea fișierul „test” care va fi responsabil pentru ștergerea tuturor fișierelor și folderelor goale găsite în directorul tmp. Pentru a face acest lucru, vom introduce următoarea comandă.

crontab prueba

În continuare, trebuie să introducem comanda (sau comenzile care le separă cu punct și virgulă „;” fără ghilimele). În acest exemplu, vom folosi Crontab pentru a șterge fișierele din folderul tmp.

find /tmp -type f -empty -delete

În continuare, edităm fișierul pentru a adăuga programul, adică atunci când dorim să fie executate sarcinile pe care le-am introdus în fișier.

crontab -e

Pentru ca acesta să fie executat în fiecare zi la 10 dimineața, trebuie să adăugăm 0 10 * * * înainte de script, lăsând linia după cum urmează

0 10 * * * find /tmp -type f -empty -delete

Dacă vrem să fie executat la un alt moment, trebuie doar să modificăm numărul 10 pentru ora (în format de 24 de ore) în care dorim să fie executată. Putem folosi și coduri de timp pe care le-am arătat în secțiunea Managementul programare pentru a o configura. În cele din urmă, folosim următoarea comandă pentru ca Cron să poată executa fișierul de automatizări pe care l-am creat.

[code]chmod ugo+x prueba

Alternative la Cron

După cum am menționat în secțiunile anterioare, Cron este responsabil de executarea comenzilor pe care le-am introdus anterior în Crontab. Cron este un instrument perfect pentru echipele care rulează 24 de ore pe zi, deși îl putem adapta și la programul nostru de lucru, chiar dacă ia resurse de la echipă în timp ce sarcinile sunt îndeplinite. Dacă căutăm opțiuni mai simple pentru Cron, atunci vă arătăm unele dintre cele mai bune alternative.

anacron

Anacron ne permite să programăm execuția automată a sarcinilor într-o zi, săptămână sau lună, în orice moment. Dacă computerul este oprit, data viitoare când pornim computerul, se va îndeplini sarcina pe care am introdus-o anterior în Crontab. Cu Cron, dacă computerul este oprit la data specificată, sarcina nu va fi efectuată atunci când pornim computerul. Anacron este disponibil în majoritatea distribuțiilor Linux și îl putem instala pe computer prin următoarea comandă.

sudo apt install anacron

Cronie

Cronie ne oferă o experiență mult mai completă decât Cron, și un mic set de aplicații (printre care este inclus și Anacron) și cu care putem programa fluxuri de lucru foarte rapid și ușor prin Crontab. Spre deosebire de Anacron, pentru a instala Cronie, acesta nu este disponibil în depozitele Linux, așa că trebuie să vizităm pagina sa web pe GitHub pentru a-l descărca sau utilizați următoarea comandă.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz