Geekflare wordt ondersteund door ons publiek. We kunnen affiliate commissies verdienen met het kopen van links op deze site.
In Linux en Netwerken Laatst bijgewerkt: 23 september 2023
Deel op:
Freshdesk - De gebruiksvriendelijke klantondersteuningssoftware die u helpt om klanten een heerlijke ervaring te bezorgen.

Laten we eens kijken naar crontab, de commando’s en de verschillende bewerkingen die met crontab geassocieerd worden.

We zullen leren hoe we taken kunnen plannen met het hulpprogramma cron, en als laatste zullen we ook enkele van de online hulpprogramma’s bespreken die ons helpen bij het formatteren en testen van de cron-opdrachten.

Oorsprong

Crontab staat voor“cron tabel“. Het woord cron komt van het Griekse woord Chronos dat tijd betekent. Crontab is een systeemdaemonproces dat automatisch bepaalde taken en opdrachten uitvoert volgens de geplande tijd.

Gebruik

Crontab is handig om verschillende bewerkingen uit te voeren, zoals het maken van geautomatiseerde back-ups, het roteren van logbestanden, het synchroniseren van bestanden tussen externe machines en het leegmaken van tijdelijke mappen, enz. Crontab kan voor elk soort werk gebruikt worden, maar het wordt vooral nuttig wanneer we te maken krijgen met systeembeheer.

Met behulp van cron kan een beheerder een taak inplannen om op een bepaalde tijd en dag uit te voeren.

Laten we eens kijken hoe we dit kunnen instellen.

Crontab Syntaxis

Om een lijst met opdrachten uit te voeren, leest het hulpprogramma cron de configuratiebestanden. Om de regels in de configuratietabellen van crontab te interpreteren, volgt het een Crontab-syntaxis. Crontab heeft zes velden, en de eerste vijf(1-5) velden definiëren de datum en tijd van uitvoering. Het laatste veld, d.w.z. het 6e veld, kan een gebruikersnaam en/of een uit te voeren taak /job/commando/script zijn.

* * * * USER_NAME UIT TE VOEREN OPDRACHT/SCRIPT

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_ ________ Dag van de week (0 – 6) (0 is zondag, of gebruik namen)
│ │ │ |____________ Maand (1 – 12),* betekent elke maand
│ │ |______________ Dag van de maand (1 – 31),* betekent elke dag
│ |________________ Uur (0 – 23),* betekent elk uur
|Minuut (0 – 59), * betekent elke minuut

Opmerkingen:

  • Een sterretje (*) wordt gebruikt om alle mogelijke waarden voor een veld te matchen. Bijvoorbeeld, een sterretje in het veld uur is gelijk aan elk uur of een sterretje in het veld maand is gelijk aan elke maand.
  • gebruikersnaam is optioneel (alleen beschikbaar als het het crontab-bestand van het systeem is)

Voorbeelden:

Laten we de bovenstaande syntaxis begrijpen met enkele voorbeelden

1. Plan een cron om dagelijks om 5 uur ‘s ochtends uit te voeren

0 5 * * * /scripts/job.sh

2. Plan een cron om twee keer per dag om 6 uur ‘s ochtends en 6 uur ‘s avonds uit te voeren

0 6,18 * * * /scripts/job.sh

3. Plan een cron om elke minuut uit te voeren

* * * * /scripts/job.sh

4. Plan een cron om elke maandag om 7 PM uit te voeren.

0 19 * * mon /scripts/job.sh

5. Plan een cron om elke 15 minuten uit te voeren.

*/10 * * * /scripts/job.sh

6. Plan een cron om uit te voeren op geselecteerde maanden

* * feb,jun,oct * /script/job.sh

7. Voer het shellscript /home/script/backup.sh op 4 maart om 7:25 uur uit

25 7 4 3 * /home/script/backup.sh

8. Plan een cron om elke 30 seconden uit te voeren

Aangezien we geen controle hebben over de seconden in de Crontab, kunnen we dit wel bereiken via het onderstaande proces in twee stappen.

  • Laten we eerst een taak plannen die elke minuut wordt uitgevoerd.
* * * * /home/scripts/script.sh
  • Laten we nu het commando sleep gebruiken om de uitvoering 30 seconden te pauzeren.
* * * * sleep 30; /home/scripts/script.sh

De bovenstaande opdracht zal de uitvoering gedurende 30 seconden stoppen, en daarna weer hervatten.

Type Cron-configuratiebestanden

Er zijn twee soorten Cron-configuratiebestanden:

De UNIX/Linux systeem Crontab

Hiervoor is rootprivilege nodig omdat het meestal gebruikt wordt voor systeemservices en kritieke taken. Het zesde veld (in de bovenstaande syntaxisbeschrijving) is de naam van een gebruiker voor de opdracht om als uit te voeren. Dit geeft system crontab de mogelijkheid om opdrachten als elke gebruiker uit te voeren.

De gebruiker crontab

Gebruikers kunnen ook hun eigen cronjobs installeren met het commando crontab. Ook hier is het zesde veld (in de bovenstaande syntaxisbeschrijving) het uit te voeren commando, en alle commando’s worden uitgevoerd als de gebruiker die de crontab heeft aangemaakt.

Elke gebruiker kan zijn eigen crontab-bestand hebben, en hoewel dit bestanden zijn in /var/spool/cron/crontabs, zijn ze niet bedoeld om direct bewerkt te worden. We moeten het crontab commando gebruiken om onze eigen cron jobs te bewerken of in te stellen.

Hoe werkt het?

De cron-service (daemon) draait op de achtergrond en controleert voortdurend (elke minuut) het bestand /etc/crontab en de mappen /etc/cron.*/. Het controleert ook de /var/spool/cron/ directory.

Commando’s worden door cron uitgevoerd als de minuten-, uren- en maandvelden overeenkomen met de huidige tijd, en minstens één van de tweedaagse velden (dag van de maand of dag van de week) overeenkomt met de huidige dag.

Basisopdrachten

Bestaande Cronjobs weergeven

We kunnen een lijst maken van alle Cron-taken zonder het crontab-configuratiebestand te openen met de volgende opdracht

crontab -l

Als er geen bestaande taak is, wordt de uitvoer als volgt weergegeven

[geekflare@localhost ~]# crontab -l
geen crontab voor geekflare
[geekflare@localhost ~]#

Als de gebruiker al enkele taken heeft toegevoegd, wordt dit als volgt weergegeven.

[geekflare@localhost ~]# crontab -l
# Bewerk dit bestand om taken in te voeren die door cron uitgevoerd moeten worden.
#
# Elke uit te voeren taak moet gedefinieerd worden via een enkele regel
# die met verschillende velden aangeeft wanneer de taak uitgevoerd zal worden
# en welk commando uitgevoerd moet worden voor de taak
#
# Om de tijd te definiëren kunt u concrete waarden opgeven voor
# minuut (m), uur (h), dag van de maand (dom), maand (mon),
# en dag van de week (dow) of gebruik '*' in deze velden (voor 'any').#
# Merk op dat taken gestart worden op basis van de cron's systeem
# daemon's notie van tijd en tijdzones.
#
# Uitvoer van de crontab-taken (inclusief fouten) wordt via
# e-mail naar de gebruiker gestuurd bij wie het crontab-bestand hoort (tenzij omgeleid).
#
# U kunt bijvoorbeeld elke week om 5 uur een back-up van al uw gebruikersaccounts
# uitvoeren met:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# Zie voor meer informatie de handleidingpagina's van crontab(5) en cron(8)
#
# m h dom mon dow commando
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[geekflare@localhost ~]# [geekflare@localhost ~]#]

Cron-tabel is gebruikersspecifiek, wat betekent dat u moet zijn ingelogd met een specifieke gebruiker om de lijst met cron-tabellen te zien.

Cron voor bepaalde gebruiker weergeven

Om geplande taken van een andere gebruiker weer te geven, gebruikt u de optie -u(Gebruiker) en -l(Lijst).

crontab -u andere_gebruikersnaam -l

Voorbeeld: crontab -u geekflare -l

Crontab-vermeldingen toevoegen/wijzigen

Om de crontabvermelding te bewerken, kunnen we de optie -e gebruiken, zoals hieronder weergegeven.

crontab -e

De bovenstaande opdracht opent de vi editor waar u de details van de opdracht opgeeft en het bestand opslaat. Eenmaal opgeslagen, kunt u met crontab -l controleren of cron is geconfigureerd of niet.

Crontab-items voor bepaalde gebruiker toevoegen/wijzigen

We kunnen de crontab voor een andere gebruiker bewerken met de volgende opdracht

crontab -u andere_gebruikersnaam -e

Voorbeeld: crontab -u geekflare -e

Crontab-invoer verwijderen

Gebruik de <strong>-r</strong> parameter in Crontab om volledige geplande taken zonder bevestiging uit crontab te verwijderen

crontab -r

Als u bevestiging wilt voordat u geplande taken verwijdert, gebruik dan de optie <strong>-i</strong> met -r, die de gebruiker om bevestiging vraagt voordat de crontab van de gebruiker wordt verwijderd.

crontab -i -r
[geekflare@localhost ~]# crontab -i -r
crontab: echt de crontab van geekflare verwijderen?

Crontab speciale string

Naast de bovenstaande syntaxis die we hebben besproken, kunnen we ook acht speciale strings gebruiken die Crontab biedt. Dit bespaart ons niet alleen tijd, maar verbetert ook de leesbaarheid.

Speciale stringBeschrijving
@rebootEenmalig uitvoeren, na het opstarten.
@yearlyEén keer per jaar uitvoeren, d.w.z., 0 0 1 1 *
@jaarlijksZelfde als @yearly
@maandelijksEens per maand uitvoeren, d.w.z., 0 0 1 * *
@weeklyEén keer per week uitvoeren, dus 0 0 * * 0
@dagelijksEén keer per dag uitvoeren, dus 0 0 * *
@middernachtZelfde als @daily
@uurlijkEén keer per uur uitvoeren, dus 0 * * * *

Crontab Speciale String Voorbeelden

1. Crontab om taken op jaarbasis te plannen

@yearly /scripts/groet.sh

We kunnen het bovenstaande uitvoeren om een nieuwjaarsgroet te versturen, het zal op de eerste minuut van elk jaar worden uitgevoerd.

2. Crontab om taken in te plannen die maandelijks worden uitgevoerd.

@maandelijks /scripts/cleanup.sh

We kunnen het bovenstaande uitvoeren om aan het begin van elke maand enkele opruimactiviteiten uit te voeren.

Op dezelfde manier kunnen we andere speciale Crontab-strings gebruiken voor wekelijkse, dagelijkse en uurlijkse doeleinden.

Cron Directory

De systeembeheerder kan een systeembreed cron-schema gebruiken dat onder de vooraf gedefinieerde cron-directory valt, zoals hieronder weergegeven

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.maandelijks
  • /etc/cron.weekly

Crontab Realtime Voorbeelden

Laten we enkele realtime voorbeelden bespreken die een systeembeheerder of IT-professional gewoonlijk gebruikt.

Lege bestanden en mappen verwijderen

45 0 * * geekflare find /tmp -type f -empty -delete

Bovenstaande cron-expressie vindt de lege bestanden en mappen in de map /tmp en verwijdert ze. Deze taak wordt dagelijks om 12.45 uur uitgevoerd. We moeten de gebruikersnaam opgeven om deze taak uit te voeren. In het bovenstaande voorbeeld voert de geekflare-gebruiker de crontaak uit.

Meerdere taken uitvoeren met een enkele cron

* * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Meerdere taken/jobs kunnen worden gescheiden met een puntkomma(;) en kunnen worden toegewezen aan een enkele cron-expressie.

Cron opmaak & testtools

Tot nu toe hebben we de commando’s en syntaxis van crontab besproken om een taak in te plannen. Maar wat als u geen systeembeheerder bent en het niet uw taak is om regelmatig Cron in te stellen, dan is het misschien niet mogelijk om de syntaxis te onthouden en is er ruimte voor fouten. Geen zorgen, wij hebben een oplossing voor dit probleem.

Er zijn verschillende Cron-opmaakprogramma’s online beschikbaar.

# 1. Cron Job Generator

Cron Job Generator is een zeer gebruiksvriendelijke GUI waar u de minuten, dagen en het pad van het script kunt opgeven om crontab te genereren.

Laten we een real-time voorbeeld nemen waarbij ik /home/processMonitor.sh elke 5 minuten moet uitvoeren tussen maandag en vrijdag.

Dus ik heb de onderstaande Cron-syntaxis die ik in mijn crontab kan zetten door het volgende uit te voeren

crontab -e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Crontab Generator

Crontab Generator is een ander handig hulpprogramma om crontab te genereren en met dit hulpprogramma kunt u ook toevoegen of u de cronuitvoer in een bestand wilt opslaan of per e-mail wilt verzenden.

# 3. Crontab Guru

Crontab Guru is een eenvoudige online cron schema expressie editor. Daarnaast biedt het een handige manier om uw cronjob te controleren. Het enige wat we hoeven te doen, is een gegeven commando kopiëren en aan het einde van de crontab-definitie toevoegen. Als de cronjob mislukt of zelfs niet start, ontvangt u een waarschuwingsmail.

In het onderstaande voorbeeld wordt de taak elke dag, elke maand en elke week om 04:05 uitgevoerd.

# 4. CRON Tester

MetCRON Tester kunnen we de tijd-/datumdefinities van de cron testen. Er kan zich een situatie voordoen waarin we de bestaande cron syntax moeten decoderen om problemen op te lossen of gewoon een test willen doen.

Daarvoor kunnen we dit hulpmiddel gebruiken. Het enige wat we hoeven te doen, is onze cron-expressie kopiëren en plakken in het cron-definitieveld, vervolgens het aantal iteraties kiezen en op Test klikken om de verschillende data te zien waarop deze zal worden uitgevoerd.

Laten we een van onze cron-expressies 4 3 */2 *controleren , dieom 03:04(AM) op elke twee dagen zou moeten draaien. Laten we het controleren met cron tester.

Conclusie

Ik hoop dat het bovenstaande u helpt om Crontab en het instellen van cron-taken beter te begrijpen. Het plannen van taken via Cron is een van de vele taken die door Linux Admin worden uitgevoerd. Als u geïnteresseerd bent in het leren van geavanceerde vaardigheden, bekijk dan deze cursus.

  • Chandan Kumar
    Auteur
    Chandan Kumar is de oprichter van Geekflare. Hij heeft miljoenen mensen geholpen om uit te blinken in de digitale wereld. Hij heeft een passie voor technologie en is op een missie om de wereld te verkennen en de groei voor professionals en bedrijven te versterken.
Met dank aan onze sponsors
Meer lezingen over Linux
Energie voor uw bedrijf
Enkele van de tools en services om je bedrijf te helpen groeien.
  • De tekst-naar-spraak tool die AI gebruikt om realistische stemmen zoals mensen te genereren.
    Probeer Murf AI
  • Web scraping, residentiële proxy, proxy manager, web unlocker, zoekmachine crawler en alles wat je nodig hebt om webgegevens te verzamelen.
    Probeer Brightdata
  • Monday.com is een alles-in-één werk OS om je te helpen bij het beheren van projecten, taken, werk, verkoop, CRM, operaties, workflows en meer.
    Probeer maandag
  • Intruder is een online kwetsbaarhedenscanner die zwakke plekken in de cyberbeveiliging van uw infrastructuur vindt om kostbare datalekken te voorkomen.
    Probeer indringer