Cron Jobs: zelfstudie voor beginners voltooien

Cron Jobs Complete Beginners Tutorial



Cron is het meest bruikbare hulpprogramma in een Linux- of UNIX-achtig besturingssysteem waarmee opdrachten of scripts volgens een bepaald schema kunnen worden uitgevoerd zonder tussenkomst van de gebruiker. De geplande opdrachten en scripts worden ook genoemd als cron-taken. Het wordt meestal gebruikt voor het automatiseren van terugkerende taken, zoals het uitvoeren van geplande back-ups, het opschonen van tijdelijke bestanden, systeemonderhoud en verschillende andere terugkerende taken. Het is vergelijkbaar met de Taakplanner in Windows OS.

In deze zelfstudie bieden we u de basisintroductie van alles wat u moet begrijpen voor het plannen van een taak met cron. Dit omvat de basissyntaxis van cron, het bewerken van het crontab-bestand, het plannen van een taak met cron met enkele voorbeelden, het bekijken van de cron-taak, enz.







Basisprincipes van Cron Job

Laten we enkele basisprincipes van een cron-job begrijpen.



Wat is Crond?

Crond is de daemon in het Linux-systeem die op de achtergrond draait en elke minuut controleert of er op dat moment een taak is gepland. Als dat zo is, voert het die taak uit, anders blijft het inactief.



Cron Job-syntaxis

De syntaxis voor cronjob is als volgt:





* * * * *opdracht/script

Van links:

  • De eerste * komt overeen met Minuten (0-59)
  • De tweede * komt overeen met Uren (0-23)
  • De derde * komt overeen met Dag van de maand (1-31)
  • De vierde * komt overeen met de maand van het jaar (1-12)
  • De vijfde * komt overeen met de dag van de week (0-6, zondag tot zaterdag)

Gebruik de volgende operatorsymbolen om meerdere waarden in een veld op te geven:



  1. Sterretje (*): Alle mogelijke waarden voor een veld specificeren
  2. Streepje (-): Tot s specificeer een bereik van waarden
  3. De komma (,): Een lijst met waarden opgeven
  4. Scheidingsteken (/): Een stapwaarde specificeren

Crontab-bestand bewerken

Crontab is een bestand dat de geplande taken in een specifieke syntaxis bevat. Er zijn twee soorten crontab-bestanden; één voor systeemspecifieke cron-taken en de andere voor gebruikersspecifieke cron-taken.

Systeem cron-taken

De systeembrede cron-taken bevinden zich in de /etc/crontab bestand en /etc/cron.d directory, en ze worden doorlopen /etc/cron.hourly , /etc/cron.daily , /etc/cron.wekelijks en /etc/cron.maandelijks. Alleen een systeembeheerder heeft toegang tot deze bestanden.

Een systeembeheerder kan een cron-taak definiëren met de volgende opdracht:

$nano /enzovoort/crontab

Hier is de syntaxis van de taak in de /etc/crontab het dossier:

# min hr dayofmonth maand dayofweek gebruikersnaam commando
* * * * *gebruiker1ifconfig

Gebruikersspecifieke cron-taken

De gebruikersspecifieke cron-taken bevinden zich in de / var / spool / cron / crontabs map. Hoewel je deze jobs handmatig kunt bewerken, is het aan te raden om deze jobs te bewerken met het crontab -e commando.

Een standaardgebruiker kan een cronjob definiëren met het volgende commando:

$crontab-En

Als u bijvoorbeeld bent aangemeld als testgebruiker, zal het uitvoeren van de opdracht crontab -e het crontab-bestand voor de testgebruiker bewerken. Evenzo, als je bent ingelogd als rootgebruiker, zal het crontab -e commando het crontab-bestand voor de rootgebruiker bewerken.

Geef de onderstaande opdracht in Terminal om het crontab-bestand voor elke andere gebruiker te bewerken:

$sudocrontab-u <gebruikersnaam> -En

Als u bijvoorbeeld bent aangemeld als een test1-gebruiker en het crontab-bestand voor de test2-gebruiker wilt bewerken, zou de opdracht zijn:

$sudocrontab-utest2-En

Hier is de syntaxis van de cron-taak die in het crontab-bestand kan worden toegevoegd:

# m h dayofmonth maand dayofweek commando
* * * * * ifconfig

U kunt in gebruikersspecifieke taken zien dat er geen gebruikersnaam is opgegeven.

Crontab-opdrachten

De opdracht crontab wordt gebruikt om de cron-taken te bewerken, weer te geven en te verwijderen:

  • crontab -e Het crontab-bestand van de huidige gebruiker bewerken
  • crontab -l Om de inhoud van het crontab-bestand weer te geven
  • crontab -u [gebruikersnaam] Om het crontab-bestand van een andere gebruiker te bewerken:
  • crontab -r Om het crontab-bestand van de huidige gebruiker te verwijderen
  • crontab -i Een prompt weergeven voordat het crontab-bestand van de huidige gebruiker wordt verwijderd:

Een taak plannen met Cron

Met Cron kunt u een taak uitvoeren op een specifieke tijd, datum en intervallen met een minimale eenheid in minuten, d.w.z. u kunt elke minuut een taak uitvoeren.

Om een ​​taak met cron te plannen, opent u het crontab-bestand met behulp van de methode die in de vorige sectie is besproken. Nadat u het crontab-bestand hebt geopend, wordt u gevraagd een teksteditor te selecteren. Typ een nummer om uw favoriete teksteditor te kiezen. Scrol omlaag naar de onderkant van het bestand en voeg taken toe in de hierboven beschreven syntaxis. Elke regel in een bestand specificeert één opdracht. De eerste vijf vermeldingen in de regel geven de geplande tijd aan en de laatste vermelding geeft aan welke opdracht of welk script moet worden uitgevoerd.

Voorbeeld:

De volgende regel in het crontab-bestand plant de cron-taak om de opdracht/het script elke 30e minuut na 5 uur uit te voeren op elke dag van de week van maandag tot en met zaterdag.

* /30 5 * * 1-6opdracht/script

Minuten

In dit veld specificeren we de minuten wanneer we willen dat de opdracht wordt uitgevoerd. Het is gespecificeerd van 0 tot 59. De * in dit veld betekent dat de taak elke minuut moet worden uitgevoerd. In de bovenstaande crontab-regel vertelt de */30 de cron-taak om het opgegeven commando/script elke 30 minuten uit te voeren.

Uren

In dit veld specificeren we de uren waarop we willen dat de opdracht wordt uitgevoerd. Het is gespecificeerd van 0 tot 23. De * in dit veld betekent dat de taak elk uur moet worden uitgevoerd. In de bovenstaande crontab-regel vertelt de waarde 5 de cron-taak om de opgegeven opdracht/het opgegeven script elke vijf uur uit te voeren.

Dag van de maand

In dit veld specificeren we de specifieke dagen of maanden waarop we willen dat de opdracht wordt uitgevoerd. Het wordt gespecificeerd van 1 tot 31. De * in dit veld betekent elke dag. In de bovenstaande crontab-regel vertelt de * de cron-taak om het opgegeven commando/script elke dag uit te voeren.

Maand van het jaar

In dit veld specificeren we de specifieke maanden waarin we willen dat de opdracht wordt uitgevoerd. Het wordt gespecificeerd van 1 tot 12. De * in dit veld betekent elke maand. In de bovenstaande crontab-regel vertelt de * de cron-job om het opgegeven commando/script elke maand uit te voeren.

Dag van de week

In dit veld specificeren we de specifieke dagen van de week waarop we willen dat de opdracht wordt uitgevoerd. Het wordt gespecificeerd van 0 tot 6 van zondag tot zaterdag (0 voor zondag en 6 voor zaterdag). De * in dit veld betekent elke dag in een week. In de bovenstaande crontab-regel vertelt de * de cron-job om het opgegeven commando/script elke dag in een week uit te voeren.

Voorbeelden van Cron-banen

Hier zijn een paar voorbeelden van cronjobs:

Voer elke 15 minuten een cronjob uit

Om een ​​cron-taak in te plannen die elke 15 minuten wordt uitgevoerd, voegt u de onderstaande regel toe aan het crontab-bestand:

* /vijftien * * * *opdracht/script

Voer elke dag om 5 uur een cronjob uit

Om te plannen dat een cron-taak elke dag om 5 uur 's ochtends wordt uitgevoerd, voegt u de onderstaande regel toe aan het crontab-bestand:

0 5 * * *opdracht/script

Voer elke dag om 17.00 uur een cronjob uit

Om te plannen dat een cron-taak elke dag om 17.00 uur wordt uitgevoerd, voegt u de onderstaande regel toe aan het crontab-bestand:

0 17 * * *opdracht/script

Voer een cronjob uit om 9.00 uur op de eerste dag van elke maand

Om te plannen dat een cron-taak op de eerste dag van elke maand om 9.00 uur wordt uitgevoerd, voegt u de onderstaande regel toe aan het crontab-bestand:

0 9 1 * *opdracht/script

Voer elk uur een cronjob uit op 15 maart

Om elk uur op 15 maart een cron-job te plannen, voeg je de onderstaande regel toe aan het crontab-bestand:

0 * vijftien 3 *opdracht/script

Voer elke 5 uur een cronjob uit

Om elke 5 uur een cron-job in te plannen, voeg je de onderstaande regel toe aan het crontab-bestand:

0 * /5 * * *opdracht/script

Voer elke 15 minuten een cronjob uit

Om een ​​cron-taak in te plannen die elke 15 minuten wordt uitgevoerd, voegt u de onderstaande regel toe aan het crontab-bestand:

* /vijftien * * * *

Strings gebruiken

De volgende tekenreeksen kunnen ook worden gebruikt om een ​​taak te definiëren:

  1. @uur: Om een ​​taak één keer per uur uit te voeren, d.w.z. 0 * * * *
  2. @middernacht: Om een ​​taak eenmaal per dag uit te voeren, d.w.z. 0 0 * * *
  3. @dagelijks: hetzelfde als middernacht
  4. @wekelijks: Om een ​​taak eenmaal per week uit te voeren, d.w.z. 0 0 * * 0
  5. @maandelijks: Om een ​​taak één keer per maand uit te voeren, d.w.z. 0 0 1 * *
  6. @jaarlijks: Eén keer per jaar een taak uitvoeren, d.w.z. 0 0 1 1 *
  7. @jaarlijks: hetzelfde als @annual
  8. @herstart: Om een ​​taak bij elke start één keer uit te voeren

Om bijvoorbeeld elke week een script of commando uit te voeren, zou het item in het crontab-bestand zijn:

@wekelijkse opdracht/script

Vooraf gedefinieerde Cron-mappen

Er zijn enkele vooraf gedefinieerde cron-directories in Linux waar de opgeslagen scripts automatisch worden uitgevoerd. Als we een script onder deze mappen plaatsen, wordt het automatisch uitgevoerd op het geconfigureerde tijdstip.

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.maandelijks
  • /etc/cron.wekelijks

Om bijvoorbeeld eens per maand een script uit te voeren, moet u het in /etc/cron.monthly.

Cron-vacatures weergeven

Bekijk vacatures voor de huidige gebruiker

Gebruik de volgende opdracht om alle geplande cron-taken voor de huidige gebruiker te bekijken:

$crontab-de

Bekijk vacatures voor de root-gebruikers

Geef de volgende opdracht in Terminal om alle geplande taken van de rootgebruiker te bekijken:

$kat /enzovoort/crontab

U moet inloggen als rootgebruiker of de opdracht uitvoeren als sudo.

Bekijk vacatures voor de andere gebruikers

Om alle geplande taken van een specifieke gebruiker te bekijken, geeft u de volgende opdracht in Terminal en vervangt u de door de werkelijke gebruikersnaam:

$sudocrontab-u <gebruikersnaam> -de

Om deze opdracht uit te voeren, hebt u sudo-rechten nodig.

Cron-jobs per uur bekijken

Voer de volgende opdracht in Terminal uit om alle cron-taken te bekijken die zijn geconfigureerd om elk uur te worden uitgevoerd:

$ls -de /enzovoort/cron.uurlijk

Dagelijkse cron-taken bekijken

Geef de volgende opdracht in Terminal om alle cron-taken te bekijken die zijn geconfigureerd om dagelijks te worden uitgevoerd:

$ls -de /enzovoort/cron.dagelijks/

Bekijk wekelijkse cron-jobs

Om alle cron-taken te bekijken die zijn geconfigureerd om wekelijks te worden uitgevoerd, geeft u de volgende opdracht in Terminal:

$ls -de /enzovoort/cron.wekelijks/

Maandelijkse cron-taken bekijken

Om alle cron-taken te bekijken die zijn geconfigureerd om maandelijks te worden uitgevoerd, geeft u de volgende opdracht op in Terminal:

$ls -de /enzovoort/cron.maandelijks/

Back-up van alle Cron-taken

Het wordt aanbevolen om een ​​back-up van alle cron-taken in een bestand te bewaren, zodat u deze kunt herstellen in geval van verwijdering. Om een ​​back-up te maken van alle huidige taken, gebruikt u de omleidingsoperator om de uitvoer van crontab -l naar een bestand om te leiden.

$crontab-de >backup_cron.txt

Alle geplande Cron-taken verwijderen

Om alle geplande cron-taken te verwijderen, gebruikt u de vlag -r als volgt:

$crontab-R

Cron-toestemming

We kunnen de toegang tot het crontab-commando beperken via twee bestanden: / etc/cron.allow en / etc/cron.deny.

  • /etc/cron.allow – Voeg gebruikers toe (één per regel) die u toegang wilt geven tot crontab-commando's. Deze gebruikers kunnen planningstaken uitvoeren.
  • /etc/cron.deny – Voeg gebruikers toe (één per regel) die u de toegang tot crontab-commando's wilt ontzeggen. Deze gebruikers kunnen geen geplande taken uitvoeren.

Crontab-syntaxisgeneratoren

Er zijn enkele websites die het genereren van syntaxis voor crontabs toestaan. Deze websites maken het gemakkelijker om crontab-expressies te genereren zonder de syntaxis te hoeven onthouden. Hoewel er verschillende websites beschikbaar zijn voor syntaxisgeneratoren zoals: crontabgenerator.com , crontab-generator.org , en cronmaker.com . Degene die ik het meest prefereer en nuttig vond, is de crontab.guru . Op basis van gebruikersinvoer genereert het een crontab-expressie die u kunt kopiëren en plakken in het crontab-bestand.

Conclusie

In deze zelfstudie hebben we de basisprincipes van cron-taken, de syntaxis en hoe deze in te stellen uitgelegd. We hebben ook besproken hoe u cron-taken kunt bekijken, een back-up kunt maken en ze kunt verwijderen als ze niet langer nodig zijn.