Programarea scripturilor cu Cron

Introducere în Bash Scripting

Alex Scriven

Data Scientist

De ce să programăm scripturile?

 

Există multe situații în care programarea scripturilor poate fi utilă:

  1. Sarcini regulate ce trebuie efectuate. Poate zilnic, săptămânal, de mai multe ori pe zi.
    • Ați putea seta un memento în calendar, dar ce se întâmplă dacă uitați!?
  2. Utilizare optimă a resurselor (rularea scripturilor în primele ore ale dimineții)

Programarea scripturilor cu cron este esențială pentru cunoașterea infrastructurilor de date moderne.

Introducere în Bash Scripting

Ce este cron?

 

Cron face parte din sistemele de tip Unix încă din anii '70. Oamenii au fost lenești atât de mult timp!

Numele provine din cuvântul grecesc pentru timp, chronos.

Este condus de un crontab, un fișier ce conține cronjob-uri, fiecare indicând crontab-ului ce cod să ruleze și când.

Introducere în Bash Scripting

Crontab - motorul cronjob-urilor

 

Puteți vedea ce planificări (cronjob-uri) sunt programate în prezent folosind comanda:

crontab -l
crontab: no crontab for user

Se pare că trebuie să creăm o planificare (cronjob)!

Introducere în Bash Scripting

Structura crontab și cronjob

Această imagine de pe Wikipedia demonstrează cum se construiește un cronjob în fișierul crontab. Puteți avea mai multe cronjob-uri, câte unul pe linie.

Structura unui crontab

  • Există 5 asteriscuri de setat, câte unul pentru fiecare unitate de timp
  • Implicit, * înseamnă 'fiecare'
Introducere în Bash Scripting

Exemplu de cronjob

Să parcurgem câteva exemple de cronjob:

5 1 * * * bash myscript.sh

  • Asteriscul pentru minute este 5 (5 minute după oră). Asteriscul pentru ore este 1 (după ora 1:00). Ultimele trei sunt *, deci în fiecare zi și lună
    • În total: rulează în fiecare zi la 1:05.

 

15 14 * * 7 bash myscript.sh

  • Asteriscul pentru minute este 15 (15 minute după oră). Asteriscul pentru ore este 14 (după ora 14:00). Următoarele două sunt * (în fiecare zi a lunii, în fiecare lună). Ultimul asterisc este ziua 7 (duminică).
    • În total: rulează duminica la 14:15.
Introducere în Bash Scripting

Structura avansată a cronjob-ului

Dacă doriți să rulați ceva de mai multe ori pe zi sau la fiecare 'X' increment de timp, este posibil și acest lucru:

  • Utilizați virgula pentru intervale specifice. De exemplu:
    • 15,30,45 * * * * va rula la minutele 15, 30 și 45 pentru orele specificate de al doilea asterisc. Aici este în fiecare oră, zi etc.
  • Utilizați bara oblică pentru 'la fiecare X increment'. De exemplu:
    • */15 * * * * rulează la fiecare 15 minute. De asemenea, în fiecare oră, zi etc.
Introducere în Bash Scripting

Primul dvs. cronjob

Să programăm un script numit extract_data.sh să ruleze în fiecare dimineață la 1:30. Pașii sunt următorii:

  1. În terminal, tastați crontab -e pentru a edita lista de cronjob-uri.
    • Poate solicita alegerea editorului. nano este o opțiune simplă, cu o curbă de învățare mai ușoară decât vi (vim).
  2. Creați cronjob-ul:
    • 30 1 * * * extract_data.sh
Introducere în Bash Scripting

Primul dvs. cron job

3. Ieșiți din editor pentru a salva

Dacă utilizați nano (pe Mac), folosiți ctrl + o, apoi enter, apoi ctrl + x pentru a ieși.

Veți vedea mesajul crontab: installing new crontab

4. Verificați că există rulând crontab -l.

30 1 * * * extract_data.sh

Excelent!

Introducere în Bash Scripting

Vamos praticar!

Introducere în Bash Scripting

Preparing Video For Download...