Cum se planifică sarcini în Linux cu Cron și Crontab

Cum se planifică sarcini în Linux cu Cron și Crontab / Linux

Stiai asta Blade Runner este stabilit în 2019? Acum trei ani! Ca să nu mai vorbim despre Înapoi în viitor 2, unde vor călători în timp în 2015. Totuși, nu avem mașini care zboară și nu există replicanți printre noi (din câte știu).

Este ușor să te simți dezamăgit de tehnologia actuală când o comparăm cu imaginile fictive ale viitorului. Totuși, în aceste zile telefoanele noastre, computerele și chiar casele pot face lucruri uimitoare 5 DIY Proiecte de automatizare a locuinței pentru a începe cu casa dvs. inteligentă 5 DIY Proiecte de automatizare acasă pentru a începe cu casa dvs. inteligentă Când vine vorba de crearea de case inteligente, doar nu știu de unde să încep. Iată cinci proiecte inteligente de bază pentru începători, pe care le puteți construi chiar acum. Citeste mai mult . Abilitatea de a automatiza sarcinile este una dintre ele.

Fiecare utilizator Linux poate beneficia de sarcini de programare, fie că sunt legate de sistem (cum ar fi curățarea vechilor jurnale și actualizarea pachetelor) Cum se actualizează una sau toate aplicațiile pe Linux în secunde Cum se actualizează una sau toate aplicațiile pe Linux în câteva secunde Terminalul Linux face simplu să actualizați o singură aplicație pe computerul dvs. sau să aplicați simultan toate actualizările disponibile. Citiți mai multe) sau pentru a le oferi utilizatorului (verificarea e-mailului, descărcarea de podcasturi ...). Utilizatorii de Windows au avut Task Scheduler 4 Sarcini plictisitoare pe care le puteți automatiza cu programul Windows Task Scheduler 4 Sarcini plictisitoare pe care le puteți automatiza cu Windows Task Scheduler Timpul dvs. este prea valoros pentru a fi irosit cu sarcini repetitive. Să vă arătăm cum să automatizați și să programați sarcini. Avem și câteva exemple minunate. Citiți mai mult de la Windows 95. Utilitarul care face aceeași lucrare pe Linux se numește cron, iar aici vom explica cum să îl folosim.

Ce este Cron?

Cron este un serviciu de sistem care rulează în fundal, verifică sarcini programate și le execută dacă găsește orice. Sarcinile - de asemenea, numite “cron jobs 5 Idei de instalare Linux pentru începători Sugestii pentru crearea de cron și Shell Scripts 5 Idei de instalare Linux pentru începători Sugestii pentru Cron Jobs & Shell Scripts Cu scripting-ul bash puteți face o serie complexă de sarcini într-o singură trecere rapidă, astfel că este minunată pentru nevoi elaborate și repetitive. Este, de asemenea, o modalitate foarte bună de a cunoaște terminalul. Citeste mai mult ” - sunt definite în fișiere de configurare speciale (crontabs), pe care cron le scanează fiecare minut. Mai multe versiuni de cron pot fi găsite pe diferite distribuții Linux. De exemplu, furculița lui Fronda de cron se numește cronie, și există, de asemenea, fcron, bcron și dcron. Unele au caracteristici suplimentare, în timp ce altele se concentrează mai mult pe securitate, dar toate se bazează pe aceeași idee.

Acest ghid este scris pentru vixie-cron, cea mai răspândită versiune de cron și cea pe care o veți găsi pe Ubuntu și derivatele sale. În timp ce majoritatea instrucțiunilor se aplică și altor implementări cron, pot exista diferențe minore, așa că verificați manualele acestora dacă decideți să le schimbați.

Ce este un Crontab??

Dacă sunteți serios cu privire la gestionarea timpului dvs., probabil că aveți un calendar de un fel Organizați-vă timpul cu aceste 4 Aplicații Calendar Linux Organizați-vă timp cu aceste 4 Aplicații Calendar Linux Are sens să utilizați în continuare o aplicație calendar desktop? Considerăm acest lucru, mai ales pentru a permite accesul la evenimente de pe orice dispozitiv sincronizat. Aceste aplicații pentru calendarul Linux sunt deosebit de utile. Citiți mai multe - o aplicație sau cel puțin o bucată de hârtie. Crontab seamănă foarte mult cu calendarul computerului. Acesta deține informațiile despre sarcinile planificate, spunând cron care comenzi rulează la ce oră.

De fapt, mai multe crontab-uri se află pe sistemul dvs. Fiecare utilizator are propriul crontab, inclusiv root (administratorul). Crontabs de utilizator sunt stocate în / Var / spool / cron / crontabs /. crontab -l comanda va lista fișierul crontab pentru utilizatorul curent. Puteți verifica crontab rădăcină cu sudo crontab -l.

În plus, există fișierul crontab al sistemului / Etc / crontab care este utilizat pentru sarcinile la nivel de sistem. De obicei, ele iau forma unor scripturi executabile, deținute de rădăcini, plasate în /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, și /etc/cron.monthly/ foldere și pe unele distribuții, /etc/cron.d/ dosar, de asemenea. În general, nu trebuie să vă ocupați de aceste sarcini, deoarece majoritatea acestora sunt create automat de aplicațiile instalate.

Cum se programează sarcini cu Cron

Se pare simplu: pentru a programa sarcini, trebuie doar să le adăugați la crontab. Deoarece crontab este un fișier de configurare special, nu este recomandat să îl editați manual. În schimb, utilizați crontab -e comanda. Pentru a edita crontabs de root sau alți utilizatori, executați comanda cu privilegii administrative și adăugați numele de utilizator după opțiunea -u:

sudo crontab -u rădăcină -e
sudo crontab -u username -e

Fișierul crontab are două secțiuni. Prima conține variabile de mediu care sunt configurate automat. Puteți schimba în siguranță variabilele PATH, HOME și SHELL și puteți modifica variabila MAIL.

A doua parte a dosarului este cea reală “orar” cu sarcinile planificate. Fiecare sarcină ocupă o linie (rând) în tabel, cu coloane reprezentând următoarele valori:

Pentru a planifica sarcini cu succes, trebuie să știți un pic despre sintaxa crontab:

  • Numerele ar trebui să fie întregi (numere întregi) și puteți utiliza asteriscul (*) în oricare dintre coloane ca un wildcard, ceea ce înseamnă “fiecare minut / zi / lună ... ”.
  • În “Ziua lunii” coloana, aveți grijă să nu setați o dată care nu se produce în luna specificată în “Lună” (de exemplu, 30 februarie).
  • Ambii “Lună” și “Zi a săptămânii” coloanele acceptă nume scurte pentru luni și zile, respectiv, și nu sunt sensibile la litere mari.
  • În “Zi a săptămânii” coloana, ambele 0 și 7 reprezintă duminica. “Ora” coloana necesită “Timp militar” (24 de ore), dar nu puteți utiliza numărul 24 - în schimb, 0 reprezintă 12 a.m. Acest lucru se datorează faptului că valorile pentru minut, oră și zi ale săptămânii încep la 0 în loc de 1.
  • Secundele nu sunt acceptate, deci nu puteți programa o sarcină la o anumită secundă.

Ce puteți face este să programați intervale de timp inclusiv folosind o cratimă (14-22 de sub “ore” va executa sarcina continuu de la ora 2:00. până la ora 10:00) sau executați o singură sarcină de mai multe ori prin definirea unei liste separate prin virgulă (1,3,5 sub “Zi a săptămânii” va executa sarcina luni, miercuri și vineri).

Între timp, valorile treptelor sunt reprezentate de un slash (/), și acestea indică cantitatea de sărituri într-un interval; de exemplu, 3-20 / 3 sub “ore” va executa sarcina la fiecare trei ore de la 3 a.m. la 8 p.m. Acest lucru este util atunci când doriți să repetați sarcini la fiecare X oră, deoarece puteți combina un asterisc și un pas (* / X). Puteți combina intervalele cu liste și pași cu intervale, atâta timp cât utilizați numere. Cu alte cuvinte, combinații cum ar fi “Jan-mar” sau “Marti, vineri-duminică” nu sunt permise.

În mod alternativ, în loc să setați o valoare pentru fiecare coloană, puteți scrie doar @ săptămânal, @ an, lună, lună sau chiar la începutul unui rând, urmată de o comandă. Programate astfel, sarcinile vor fi difuzate la prima instanță posibilă, astfel încât @ săptămânalul să ruleze la miezul nopții în prima zi a săptămânii. Dacă doriți să executați imediat o sarcină atunci când sistemul (re) pornește, utilizați comanda @reboot.

În acest exemplu, am programat o copie de rezervă în fiecare zi la 08:20 și 20:20. Wallpaper-ul se va schimba automat la fiecare trei zile la ora 19:00, iar un script va verifica noi podcast-uri Cele mai bune 10 aplicații pentru administrarea podcast-urilor pe Linux Cele mai bune 10 aplicații pentru administrarea podcast-urilor pe Linux Linux nu are o mare varietate de clienți podcast, dar nu vă faceți griji - aproape orice player muzical modern pentru Linux poate servi ca un podcatcher. Să aruncăm o privire asupra opțiunilor. Citiți mai multe în fiecare luni de la 10:20 și 20:20. Un memento pentru ziua de naștere este setată pentru 25 martie și rulează la fiecare 30 de minute în intervalul de timp specificat. În sfârșit, un script verifică e-mailurile la fiecare 15 minute de la 8 la 20, dar numai în zilele lucrătoare. Puteți să vă organizați crontabul cu spații și file între coloane, dar nu în interiorul lor (nu introduceți spații între virgulă, cratime și tăișuri).

Dacă toate astea sunt prea complicate, nu vă faceți griji - puteți să vă bazați întotdeauna pe internet. Unelte cum ar fi Crontab Generator, Crontab.guru și Corntab vă ajută să creați lucrări cron fără a cunoaște o sintaxă crontab. Acestea vă arată când lucrarea se va desfășura în continuare și veți furniza șabloane pentru expresiile utilizate în mod obișnuit. Crontab.guru este cel mai bun din grup, deoarece vă permite să testați sintaxa crontab live-test, astfel încât să puteți vedea imediat modul în care modificările dvs. vor afecta programul.

Cum se verifică dacă sunt executate lucrările Cron

Cron ar trebui să ruleze liniștit în fundal și să vă lase să lucrați fără probleme în timp ce vă ocupați de sarcinile dumneavoastră. Dar cum puteți să vă asigurați că funcționează?

Cron are o caracteristică de notificare prin e-mail, dar acest lucru necesită crearea cel puțin unui server de mail local simplu Cum funcționează un server de e-mail? [Tehnologie explicată] Cum funcționează un server de e-mail? [Technology Explained] În spatele fiecărui e-mail este un motor puternic numit serverul de e-mail care împinge e-mailurile prin internet. Citeste mai mult . Nu mulți utilizatori de acasă sunt dispuși să configureze acest lucru, și nu multe distribuții îl furnizează în mod implicit (de exemplu, Ubuntu nu). Cea mai rapidă modalitate de a verifica pe cron este scanarea jurnalului de sistem cu această comandă:

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

Opțiunea -i face că interogarea noastră la caz nu este sensibilă. Este posibil ca cron să aibă propriul dosar de jurnal undeva / Var / log /, deci arata acolo daca aceasta comanda nu produce rezultate utile.

Dacă trebuie să salvați ieșirea dintr-o anumită lucrare cron, puteți să o redirecționați către un fișier. Furnizați calea și numele fișierului în ultima coloană a crontab-ului dvs., după comanda pe care doriți să o executați:

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

Utilizând un singur simbol> va suprascrie fișierul de fiecare dată când comanda rulează. Pentru a evita acest lucru, folosiți >> în schimb - acesta adaugă ieșirea la fișierul existent.

Dacă Cron nu funcționează?

S-ar putea să se întâmple că ați adăugat anumite sarcini, ați verificat jurnalele de sistem și ați constatat că nu execută așa cum ar trebui. Iată câteva lucruri pe care ar trebui să le luați în considerare - și să aveți grijă - când încercați să remediați problema.

Este rularea serviciului cron?

După cum știți, daemonul cron ar trebui să ruleze în fundal. Asigurați-vă că acest lucru este adevărat. Serviciul este numit crond sau doar cron.

Pentru distribuțiile utilizând sistemd:

starea sistemuluictron cron

Pentru distribuțiile utilizând Upstart:

serviciu status cron

Dacă distribuția dvs. folosește “vechi” Abordarea sistemului V init, listați toate serviciile cu:

lista initctl

și a vedea dacă cron este listat.

Chiar aveți permisiunea să aveți un fișier crontab?

Verifică-ți / etc folder pentru fișiere numite cron.allow și cron.deny. Pe Ubuntu, nu ar trebui să existe, ceea ce înseamnă că toți utilizatorii au permisiunea de a gestiona cron de locuri de muncă. Cu toate acestea, dacă există a cron.allow fișier, acesta trebuie să conțină numele dvs. de utilizator. În schimb, dacă cron.deny fișierul există, numele dvs. de utilizator nu trebuie să fie în el. Lăsând cron.deny fișierul gol înseamnă că numai rădăcina și utilizatorii listați în cron.allow pot avea fișiere crontab.

Sunt setate corect variabilele dvs.?

Crontab stabilește automat variabila SHELL / Bin / sh. Cu toate acestea, în cazul în care shell-ul dvs. de alegere este de pește 7 motive pentru care ar trebui să instalați Shell de pește 7 motive pentru care ar trebui să instalați Shell de pește Nu-mi place cum funcționează terminalul dvs. Linux? De ce nu instalați o coajă nouă? O astfel de coajă este pește, care introduce caracteristici care ar fi trebuit să devină obișnuite, dar nu au făcut-o. Hai să aruncăm o privire. Citiți mai multe sau bash, ar trebui să schimbați variabila SHELL. De asemenea, variabila PATH conține în mod implicit numai câteva directoare. Aici crontab caută comenzi Linux. Dacă activitatea dvs. cron nu reușește să ruleze, s-ar putea datora faptului că crontab nu o face “vedea” comanda pe care ați folosit-o. Pentru a evita acest lucru, adăugați directoare care conțin comenzile la variabila PATH, separate prin coloane:

PATH = / opt / AplicațiaMea / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Dacă nu doriți să editați acest lucru în crontab, puteți defini aceste variabile în scriptul pe care doriți să-l executați ca o lucrare cron.

Este formatarea crontab pe punct?

Sintaxa Crontab nu este navigarea perfectă. Chiar dacă o verificați utilizând instrumentele online menționate anterior, o mică greșeală ar putea să prevină încă executarea de către cron a locurilor de muncă. Aveți grijă să:

  • adăugați o linie goală la sfârșitul fișierului crontab
  • scăpați de semnul% cu o coloană înapoi, dacă comanda dvs. o include
  • scrieți comentarii ca linii separate începând cu #. Nu scrieți comentarii pe aceeași linie ca variabilele de mediu, sau lângă comenzile cron job.

Trebuie să utilizați terminalul?

Absolut nu. Utilizatorii KDE pot programa joburi cron cu KCron, care este accesibil de la Setări sistem> Programator activități modul. Cu o interfață simplă, care vă permite să alegeți și să optimizați totul în doar câteva clicuri, KCron este o plăcere să utilizați.

Dacă preferați GNOME, atunci programul GNOME este pentru dvs. Abordarea este similară, deși interfața este, de așteptat, ușor diferită. Oferă un mod avansat pentru modificările cu granulație fină și vine cu un applet de la care puteți gestiona direct sarcinile.

Ar trebui să fiți conștienți de alte soluții, cum ar fi Crontab-UI și Minicron. Sunt mai potrivite pentru utilizatorii care gestionează mai multe mașini și cron-uri, iar una dintre cele mai bune caracteristici ale acestora este interfața web.

Există vreo alternativă Cron?

În timp ce cron este destul de mult planificatorul de sarcini standard pentru Linux Programarea și automatizarea sarcinilor În Linux Cu Programul de planificare Gnome & automatizarea sarcinilor În Linux cu programul Gnome Citiți mai mult, cu siguranță nu este singurul. Comanda at este perfectă pentru lucrări rapide, unice, care pot fi programate chiar de la linia de comandă, fără fișiere de configurare speciale. Dacă aveți nevoie de mai mult, există GNUbatch, care introduce noțiunea de dependență. Cu GNUbatch, puteți seta anumite condiții pentru fiecare lucrare sau o sarcină programată depinde de una anterioară. Ceva similar poate fi atins cu cronometrele sistemate. Deși este mai puțin practic pentru a configura decât cron, cronometrele sistemate își pot aminti dacă o sarcină a ratat programul în timp ce computerul a fost oprit și a rula-o la următoarea pornire.

Acesta este un lucru pe care cron nu îl poate face singur. Ca atare, este potrivit pentru servere și computere care rulează în mod constant, dar nu va executa o activitate care a fost programată în timp ce computerul a fost oprit. Aici intră jocul anacron. Nu este tehnic “alternativă” sau un înlocuitor pentru cron. În schimb, anacron completează cron și ar trebui să fie folosit alături de acesta, ceea ce este cazul în multe distribuții Linux, inclusiv în produsele Ubuntu și Ubuntu. Anacron înregistrează când o activitate a fost executată ultima dată și verifică dacă au existat cazuri inutile în timp ce sistemul a fost oprit. Se va executa atunci când reporniți computerul, dar fiecare activitate poate fi executată doar o dată pe zi.

Unele versiuni ale cron, ca fcron, oferă caracteristici anacron implicit. Utilizatorii avansat ar putea dori să se uite la Hcron sau SuperCron, care aduce multe îmbunătățiri la funcțiile cron de bază, dar sunt, de asemenea, oarecum dificil de gestionat.

Și tu? Cum vă organizați sarcinile digitale? Ce sarcini planificați pe Linux? Distribuiți poveștile și sfaturile pentru utilizarea cron în comentariile.

Credit de imagine: plan de bord de către Gonzalo Aragon prin intermediul Shutterstock

Explorați mai multe despre: Linux.