Crontab in Linux: VOORBEELDEN van taakplanning

โšก Slimme samenvatting

Crontab in Linux plant opdrachten in om automatisch op vaste tijden, datums of intervallen te worden uitgevoerd met behulp van de cron-daemon. Hierdoor kunnen beheerders back-ups, het opschonen van logbestanden, meldingen en routinematig systeemonderhoud automatiseren zonder handmatige tussenkomst.

  • โฐ Cron-daemon: Het cron-achtergrondproces leest crontab-bestanden en voert elke geplande taak uit op de exacte minuut die u hebt ingesteld.
  • ๐Ÿ—‚๏ธ Crontab-indeling: Vijf tijdvelden โ€“ minuut, uur, dag van de maand, maand en dag van de week โ€“ gaan vooraf aan het commando om het uit te voeren.
  • โœ๏ธ Redactiewerkzaamheden: Gebruik crontab -e om taken toe te voegen of te wijzigen, crontab -l om ze weer te geven en crontab -r om ze te verwijderen.
  • ๐Ÿ” Speciale snaren: Snelkoppelingen zoals @reboot, @daily, @weekly en @hourly vervangen de vijf tijdvelden voor veelgebruikte schema's.
  • ๐Ÿ“… Praktische voorbeelden: Kant-en-klare invoeropties omvatten taken die elke vijf minuten, specifieke weekdagen, maandelijkse reeksen en opstarttaken omvatten.
  • ๐Ÿค– AI-assistentie: AI-assistenten en GitHub Copilot kunnen cron-expressies binnen enkele seconden genereren en uitleggen.

Crontab in Linux voor het plannen van taken, met voorbeelden.

Crontab, een afkorting van cron-tabel, is het configuratiebestand en de opdracht die de cron-tabel aanstuurt. Linux Taakplanning. De onderstaande secties leggen het crontab-formaat uit, de commando's om taken toe te voegen, weer te geven en te verwijderen, de speciale @-tekens en kant-en-klare planningsvoorbeelden.

Wat is crontab?

Cron is vernoemd naar het Griekse woord "Chronos", wat tijd betekent. Het is een systeemproces (een daemon) dat automatisch taken uitvoert volgens een vast schema. Cron is een verzameling commando's die worden gebruikt om regelmatig geplande taken uit te voeren. Crontab staat voor "cron-tabel" en hiermee kunt u de cron-taakplanner gebruiken om die taken uit te voeren.

Crontab is ook de naam van het programma waarmee dat schema wordt bewerkt. Het wordt aangestuurd door een crontab-bestand โ€“ een configuratiebestand dat de shell-opdrachten bevat die periodiek volgens het opgegeven schema moeten worden uitgevoerd.

Waarom cronjobs gebruiken?

Hieronder volgen de belangrijkste redenen om cronjobs in Linux te gebruiken:

  • Maakt periodieke back-ups van logbestanden of databases.
  • Verwijdert automatisch oude logbestanden.
  • ArchiVerwijdert en verwijdert gegevens uit databasetabellen.
  • Verstuurt notificatiemails, zoals nieuwsbrieven of herinneringen voor verlopen wachtwoorden.
  • Voert regelmatig opschoning van gecachede gegevens uit.
  • Automatiseert repetitieve Unix- en Linux-taken.
  • Automatiseert routinematig systeemonderhoud.

Hoe cron gebruiken onder Linux?

Het Linux-systeempakket bevat een handige taakplanner genaamd crontab. Crontab is populair omdat een taak kan worden ingepland om als root-gebruiker te worden uitgevoerd, wat geautomatiseerde systeemwijzigingen vereenvoudigt. Je hoeft de taak slechts รฉรฉn keer te wijzigen en vervolgens te wachten tot deze volgens schema opnieuw wordt geactiveerd.

Linux Crontab-indeling

Een crontab-item in Linux heeft zes velden. De eerste vijf velden definiรซren de tijd en datum van uitvoering, en het zesde veld bevat de uit te voeren opdracht.

Crontab-syntaxis:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

Het onderstaande diagram koppelt elk sterretje in een crontab-item aan het veld dat het beheert, van minuut tot dag van de week, gevolgd door de uit te voeren opdracht.

Diagram van de Linux crontab-indeling met de vijf tijdvelden en de opdracht.

De vijf tijdvelden accepteren de volgende waarden: minuut (0โ€“59), uur (0โ€“23), dag van de maand (1โ€“31), maand (1โ€“12 of janโ€“dec) en dag van de week (0โ€“7, waarbij 0 en 7 beide zondag betekenen). U kunt elk veld beheren met de volgende speciale tekens:

  • Sterretje (*): Komt overeen met elke mogelijke waarde voor dat veld.
  • Definieer een bereik: Gebruik een koppelteken om een โ€‹โ€‹bereik aan te geven, zoals 1-10, 30-40, jan-mrt of ma-wo.
  • Definieer meerdere bereiken: Gebruik komma's om bereiken te combineren, zoals apr-jun,okt-dec.

Crontab toevoegen/wijzigen

Gebruikers kunnen hun eigen crontab-taken bewerken met het volgende crontab-commando. De optie -u is gericht op de crontab van een specifieke gebruiker, dus geef de gebruikersnaam op zoals in de volgende voorbeelden wordt getoond:

$ crontab -u -e 

Met het bovenstaande commando opent u de persoonlijke crontab-configuratie voor uw systeem, die u kunt bewerken in uw standaard tekstverwerker.

Je hoeft cron niet opnieuw te starten; je wijzigingen worden automatisch doorgevoerd. Om je huidige taken te bekijken, gebruik je:

$ crontab -l

Om je crontab-taken te verwijderen, gebruik je de volgende opdracht:

$ crontab -r

Om een โ€‹โ€‹taak in crontab toe te voegen of bij te werken, gebruikt u de onderstaande opdracht:

crontab -e

Om de crontab van een andere gebruiker te bewerken, moet je de naam van de gebruiker opgeven met de optie -u:

crontab -u username -e

Hoe Crontab te vermelden

Om de crontab-vermeldingen van de huidige gebruiker te bekijken:

crontab -l

Om de crontab-vermeldingen van een specifieke gebruiker te bekijken:

crontab -u username -l

Belangrijke Crontab-voorbeelden

Hieronder vindt u enkele belangrijke, direct bruikbare voorbeelden van crontab-schema's:

Beschrijving commando
Voert de verschillende planningstaken uit. De onderstaande opdracht wordt dagelijks om 7:00 uur en 17:00 uur uitgevoerd.
0 7,17 * * * /scripts/script.sh
Voert elke 5 minuten een cronjob uit.
*/5* * * * *  /scripts/script.sh
Voert de taak elke Monday om 5 uur 's ochtends. Dit is handig voor wekelijkse taken zoals het opschonen van het systeem.
0 5 * * mon  /scripts/script.sh
Voert je script elke 3 minuten uit.
*/3 * * * * /scripts/monitor.sh
Hiermee wordt een cronjob ingepland die in specifieke maanden wordt uitgevoerd โ€” in dit geval februari, juni en september.
* * * feb,jun,sep *  /script/script.sh
Wordt uitgevoerd op geselecteerde dagen. Dit voorbeeld voert elke dag een test uit. Monday en woensdag om 5 uur.
0 17 * * mon,wed  /script/script.sh
Hiermee kan cron elke eerste zaterdag van de maand worden uitgevoerd.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Voert een script uit met een interval van 6 uur, geconfigureerd zoals hieronder.
0 */6 * * * /scripts/script.sh
Plant een taak in om tweemaal te worden uitgevoerd. Monday en dinsdag. Gebruik de volgende instellingen om dit te doen.
0 4,17 * * mon,tue /scripts/script.sh
Plant een cronjob in die elke 15 seconden wordt uitgevoerd.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Hiermee worden taken jaarlijks ingepland. @yearly is vergelijkbaar met โ€œ0 0 1 1 *โ€. De taak wordt รฉรฉn keer per jaar uitgevoerd, om middernacht op 1 januari โ€“ handig voor nieuwjaarswensen.
@yearly /scripts/script.sh 
Voert taken maandelijks uit. @monthly is vergelijkbaar met โ€œ0 0 1 * *โ€. De taak wordt uitgevoerd om middernacht op de eerste dag van elke maand.
@monthly /scripts/script.sh
Voert meerdere taken uit met รฉรฉn enkele cron-taak.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Hiermee worden taken wekelijks ingepland. @weekly is vergelijkbaar met "0 0 * * 0". Het voert wekelijkse taken uit, zoals het opschonen van het systeem elke zondag om middernacht.
@weekly /bin/script.sh
Hiermee worden taken dagelijks ingepland. @daily is vergelijkbaar met โ€œ0 0 * * *โ€. De taak wordt รฉรฉn keer per dag om middernacht uitgevoerd.
@daily /scripts/script.sh
Voert taken elk uur uit. @hourly is vergelijkbaar met โ€œ0 * * * *โ€. De taak wordt aan het begin van elk uur uitgevoerd.
@hourly /scripts/script.sh
Voert taken uit bij het opnieuw opstarten van het systeem. @reboot is handig voor taken die het systeem bij het opstarten moet uitvoeren, zodat achtergrondtaken automatisch kunnen starten.
@reboot /scripts/script.sh

Veelgestelde vragen

De crontabs van gebruikers worden opgeslagen in /var/spool/cron/ (of /var/spool/cron/crontabs/ op Debian en Ubuntu), terwijl de systeemwijde crontab zich bevindt in /etc/crontab en de map /etc/cron.d. Bewerk gebruikers-crontabs altijd met crontab -e in plaats van deze bestanden direct te openen.

Cron voert taken alleen uit op het exact geplande tijdstip en slaat ze over als de computer is uitgeschakeld. Anacron tracks heeft taken overgeslagen en voert deze uit zodra het systeem weer is opgestart, waardoor het geschikt is voor laptops en desktops die niet continu aan staan.

Cron gebruikt een minimale omgeving, dus een beperkt PATH is meestal de oorzaak. Gebruik absolute paden voor commando's en scripts, maak het script uitvoerbaar en leid de uitvoer om naar een logbestand, zodat u eventuele fouten kunt vastleggen voor debugging.

Voeg >> /pad/naar/logbestand 2>&1 toe aan de opdracht om standaarduitvoer en fouten in een bestand vast te leggen. Als alternatief kunt u de variabele MAILTO bovenaan de crontab instellen, zodat cron de uitvoer van elke taak naar dat adres e-mailt.

De bestanden /etc/cron.allow en /etc/cron.deny regelen de toegang. Als cron.allow bestaat, mogen alleen de gebruikers die erin vermeld staan โ€‹โ€‹crontab gebruiken. Als alleen cron.deny bestaat, mag elke gebruiker behalve de vermelde gebruikers taken inplannen.

Een crontab voor een gebruiker, aangemaakt met `crontab -e`, heeft vijf tijdvelden, gevolgd door de opdracht. Het systeembestand `/etc/crontab` voegt een veld toe met de naam van de gebruiker die de taak uitvoert, met de volgende gegevens: minuut, uur, dag, maand, weekdag, gebruiker, en vervolgens opdracht.

Ja. Machine learning-tools kunnen de normale uitvoerings- en voltooiingstijden van taken vaststellen en vervolgens afwijkingen signaleren, zoals een taak die te lang duurt, stilzwijgend mislukt of de planning mist. AI-loganalyse groepeert ook gerelateerde fouten om het onderzoek naar de hoofdoorzaak te versnellen.

Ja. GitHub-copiloot Je kunt cron-expressies genereren op basis van een opmerking in begrijpelijke taal, uitleggen wat een schema zoals */5 *** doet, en het shellscript opstellen dat een taak uitvoert. Test de expressie altijd voordat je deze toevoegt aan een crontab in productie.

Vat dit bericht samen met: