Advertentie

Wist je dat Blade Runner speelt zich af in 2019? Dat is over drie jaar! Laat staan Terug naar de toekomst 2, waar ze tijdreizen vooruit in 2015. Maar we hebben geen vliegende auto's en er zijn geen replicanten onder ons (voor zover ik weet).

linux-cron-jobs-quote

Het is gemakkelijk om je teleurgesteld te voelen over de huidige technologie als we deze vergelijken met fictieve afbeeldingen van de toekomst. Nog steeds, tegenwoordig onze telefoons, computers en zelfs huizen kunnen geweldige dingen doen 5 doe-het-zelf-automatiseringsprojecten om aan de slag te gaan met uw Smart HomeAls het gaat om het creëren van slimme huizen, weten de meeste mensen gewoon niet waar ze moeten beginnen. Hier zijn vijf eenvoudige smart home-projecten voor beginners die u nu kunt bouwen. Lees verder . De mogelijkheid om taken te automatiseren is er een van.

Elke Linux-gebruiker kan profiteren van planningstaken, ongeacht of deze systeemgerelateerd zijn (zoals het opschonen van oude logboeken en pakketten bijwerken Hoe een of alle apps op Linux in seconden te updaten

instagram viewer
De Linux-terminal maakt het eenvoudig om een ​​enkele app op uw computer bij te werken of alle beschikbare updates in één keer toe te passen. Hier is hoe. Lees verder ) of de gebruiker bedienen (e-mail controleren, podcasts downloaden ...). Windows-gebruikers hebben gehad Taakplanner 4 saaie taken die u kunt automatiseren met de Windows TaakplannerJe tijd is te waardevol om te worden verspild met repetitieve taken. Laat ons u tonen hoe u taken kunt automatiseren en plannen. We hebben ook een paar geweldige voorbeelden. Lees verder sinds Windows 95. Het hulpprogramma dat hetzelfde werk onder Linux doet, wordt cron genoemd, en hier zullen we uitleggen hoe het te gebruiken.

Wat is Cron?

Cron is een systeemservice die op de achtergrond wordt uitgevoerd, op geplande taken controleert en deze uitvoert als er taken worden gevonden. De taken - ook wel 'cron banen 5 Linux Setup-ideeën voor beginners voor Cron Jobs & Shell ScriptsMet bash-scripting kunt u een complexe reeks taken in één keer uitvoeren, dus het is geweldig voor uitgebreide en repetitieve behoeften. Het is ook een geweldige manier om terminal te leren kennen. Lees verder ”- worden gedefinieerd in speciale configuratiebestanden (crontabs), die elke minuut cron scant. Verschillende versies van cron zijn te vinden op verschillende Linux-distributies. Fedora's vork of cron wordt bijvoorbeeld genoemd Cronieen die zijn er ook fcron, bcronen dcron. Sommige hebben extra functies, terwijl anderen meer gericht zijn op beveiliging, maar ze zijn allemaal gebaseerd op hetzelfde idee.

Deze gids is geschreven voor vixie-cron, de meest voorkomende versie van cron en degene die je op Ubuntu en zijn afgeleiden zult vinden. Hoewel de meeste instructies ook van toepassing zijn op andere cron-implementaties, kunnen er kleine verschillen zijn, dus raadpleeg hun handleidingen als u besluit om te schakelen.

Wat is een Crontab?

Als je serieus je tijd wilt beheren, heb je dat waarschijnlijk gedaan een soort kalender Organiseer uw tijd met deze 4 Linux Agenda-appsIs het zinvol om nog steeds een desktop-agenda-app te gebruiken? Wij denken van wel, vooral om toegang tot evenementen op elk gesynchroniseerd apparaat mogelijk te maken. Deze Linux-agenda-apps zijn bijzonder nuttig. Lees verder - een app of op zijn minst een stuk papier. Crontab lijkt erg op de agenda van uw computer. Het bevat de informatie over geplande taken en vertelt cron welke opdrachten op welk tijdstip moeten worden uitgevoerd.

In feite zijn er verschillende crontabs op uw systeem. Elke gebruiker heeft zijn eigen crontab, inclusief root (de beheerder). Gebruikerscrontabs worden opgeslagen in /var/spool/cron/crontabs/. De crontab -l commando toont het crontab-bestand voor de huidige gebruiker. U kunt de root-crontab controleren met sudo crontab -l.

Bovendien is er het crontab-bestandssysteem /etc/crontab die wordt gebruikt voor systeembrede taken. Meestal nemen ze de vorm aan van uitvoerbare scripts in rootbezit /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/en /etc/cron.monthly/ mappen, en op sommige distributies, de /etc/cron.d/ map ook. Over het algemeen hoeft u deze taken niet uit te voeren, omdat de meeste taken automatisch worden gemaakt door geïnstalleerde applicaties.

Taken plannen met Cron

Het klinkt eenvoudig: om taken te plannen, voeg je ze gewoon toe aan je crontab. Aangezien crontab een speciaal configuratiebestand is, wordt het afgeraden om het handmatig te bewerken. Gebruik in plaats daarvan de crontab -e commando. Als u de crontabs van root of andere gebruikers wilt bewerken, voert u de opdracht met beheerdersrechten uit en voegt u hun gebruikersnaam toe na de optie -u:

sudo crontab -u root -e
sudo crontab -u gebruikersnaam -e

linux-cron-jobs-crontab-editor

Het crontab-bestand bestaat uit twee delen. De eerste bevat omgevingsvariabelen die automatisch worden ingesteld. U kunt de variabelen PATH, HOME en SHELL veilig wijzigen en de variabele MAIL wijzigen.

Het tweede deel van het bestand is het eigenlijke "tijdschema" met uw geplande taken. Elke taak neemt een regel (rij) in de tabel in, met kolommen die de volgende waarden vertegenwoordigen:

linux-cron-jobs-crontab

Om taken succesvol te plannen, moet je een beetje weten over de syntaxis van crontab:

  • De getallen moeten gehele getallen zijn (hele getallen) en u kunt het sterretje (*) in elk van de kolommen gebruiken als jokerteken, wat betekent "elke minuut / dag / maand ...".
  • Let er in de kolom 'Dag van de maand' op dat u geen datum instelt die niet voorkomt in de maand die is opgegeven in de kolom 'Maand' (bijvoorbeeld 30 februari).
  • Zowel de kolommen "Maand" als "Dag van de week" accepteren korte namen voor respectievelijk maanden en dagen, en ze zijn niet hoofdlettergevoelig.
  • In de kolom 'Dag van de week' staan ​​zowel 0 als 7 voor zondag. De kolom 'Uur' vereist de indeling 'militaire tijd' (24 uur), maar u kunt het nummer 24 niet gebruiken - in plaats daarvan staat 0 voor 12.00 uur. Dit komt omdat de waarden voor minuut, uur en dag van de week beginnen bij 0 in plaats van 1.
  • Seconden worden niet ondersteund, dus u kunt geen taak plannen op een bepaalde seconde.

Wat u kunt doen, is inclusieve tijdsbereiken plannen met behulp van een koppelteken (14-22 onder "Uren" zal de taak continu uitvoeren van 14:00 tot 22:00 uur), of meerdere keren een enkele taak uitvoeren door een door komma's gescheiden lijst te definiëren (1,3,5 onder "Dag van de week" zal de taak uitvoeren op maandag, woensdag en Vrijdag).

Ondertussen worden stapwaarden voorgesteld door een schuine streep (/) en deze geven het aantal skips binnen een bereik aan; bijvoorbeeld, 3-20 / 3 onder "Uren" zal de taak om de drie uur uitvoeren van 15.00 tot 20.00 uur. Dit is handig wanneer u taken elke X uur wilt herhalen, omdat u een asterisk en een stap kunt combineren (*/X). U kunt bereiken combineren met lijsten en stappen met bereiken zolang u getallen gebruikt. Met andere woorden, combinaties zoals "jan-mar" of "di, vr-zo" zijn niet toegestaan.

U kunt ook in plaats van een waarde voor elke kolom in te stellen, gewoon @weekly, @yearly, @monthly, @daily of @hourly aan het begin van een rij schrijven, gevolgd door een opdracht. Zo gepland, zullen de taken in de eerst mogelijke instantie worden uitgevoerd, dus @weekly zou om middernacht op de eerste dag van de week worden uitgevoerd. Als u een taak onmiddellijk wilt uitvoeren wanneer het systeem (opnieuw) wordt gestart, gebruikt u de opdracht @reboot.

linux-cron-jobs-crontab-voorbeeld

In dit voorbeeld hebben we elke dag een back-up gepland om 08:20 en 20:20. De achtergrond verandert automatisch om de drie dagen om 19:00 uur en een script zal dat doen controleer op nieuwe podcasts De 10 beste apps voor het beheren van podcasts op LinuxLinux heeft geen grote keuze aan podcast-clients, maar maak je geen zorgen - bijna elke moderne muziekspeler voor Linux kan als podcatcher dienen. Laten we de opties eens bekijken. Lees verder elke maandag om 10:20 en 20:20. Een verjaardagsherinnering is ingesteld op 25 maart en deze wordt elke 30 minuten binnen de opgegeven periode uitgevoerd. Ten slotte controleert een script e-mail elke 15 minuten van 8 tot 20, maar alleen op werkdagen. U bent vrij om uw crontab te ordenen met spaties en tabs tussen kolommen, maar niet daarbinnen (plaats geen spaties tussen komma's, koppeltekens en schuine strepen).

Als dit allemaal te ingewikkeld klinkt, maakt u zich dan geen zorgen - u kunt altijd vertrouwen op internet. Hulpmiddelen zoals Crontab Generator, Crontab.guruen Corntab helpen u bij het maken van cron-taken zonder de syntaxis van crontab te kennen. Ze laten u zien wanneer de taak als volgende wordt uitgevoerd en bieden sjablonen voor veelgebruikte uitdrukkingen. Crontab.guru is de beste van het stel, omdat je hiermee de syntaxis van crontab live kunt testen, zodat je meteen kunt zien hoe je wijzigingen het schema zullen beïnvloeden.

linux-cron-jobs-crontab-guru

Hoe te controleren of Cron-taken worden uitgevoerd

Cron wordt verondersteld rustig op de achtergrond te werken en u ongestoord te laten werken terwijl het uw taken uitvoert. Maar hoe kunt u ervoor zorgen dat het echt werkt?

Cron heeft een ingebouwde e-mailmeldingsfunctie, maar hiervoor moet u minimaal instellen een eenvoudige lokale mailserver Hoe werkt een e-mailserver? [Technologie uitgelegd]Achter elke e-mail staat een krachtige engine die de e-mailserver wordt genoemd en die de e-mails via internet doorgeeft. Lees verder . Niet veel thuisgebruikers zijn bereid dit te configureren en niet veel distributies bieden dit standaard aan (Ubuntu doet dit bijvoorbeeld niet). De snelste manier om cron te controleren, is door het systeemlogboek te scannen met deze opdracht:

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

linux-cron-jobs-log

De optie -i maakt onze zoekopdracht niet hoofdlettergevoelig. Het is mogelijk dat cron ergens een eigen logbestand heeft /var/log/, dus kijk daar of deze opdracht geen bruikbare resultaten oplevert.

Als u de uitvoer van een bepaalde cron-taak wilt opslaan, kunt u deze omleiden naar een bestand. Geef het pad en de naam van het bestand op in de laatste kolom van uw crontab, na de opdracht die u wilt uitvoeren:

30 * * * * / usr / bin / yourcommand> /home/gebruikersnaam/logbestand.txt

Het gebruik van één symbool> overschrijft het bestand telkens wanneer de opdracht wordt uitgevoerd. Om dit te voorkomen, gebruikt u in plaats daarvan >> - het voegt de uitvoer toe aan het bestaande bestand.

Wat als Cron niet werkt?

Het kan voorkomen dat u enkele taken hebt toegevoegd, de systeemlogboeken hebt gecontroleerd en hebt vastgesteld dat deze niet naar behoren worden uitgevoerd. Hier zijn enkele dingen waarmee u rekening moet houden - en waar u voorzichtig mee moet zijn - wanneer u probeert het probleem op te lossen.

Is de cron-service actief?

Zoals u weet, moet de cron-daemon op de achtergrond worden uitgevoerd. Zorg ervoor dat dit echt het geval is. De dienst heet crond of gewoon cron.

Voor distributies met systemd:

systemctl status cron

Voor distributies met Upstart:

service cron status

linux-crontaken service-status

Als uw distributie de "oude" System V init-aanpak gebruikt, vermeldt u alle services met:

initctl lijst

en kijk of cron wordt vermeld.

Mag je zelfs een crontab-bestand hebben?

Controleer je /etc map voor genoemde bestanden cron.allow en cron.deny. Op Ubuntu zou geen van beide moeten bestaan, wat betekent dat alle gebruikers cron-taken mogen beheren. Als er echter een cron.allow bestand, het moet uw gebruikersnaam bevatten. Omgekeerd, als de cron.deny bestand bestaat, uw gebruikersnaam mag er niet in staan. Het verlaten van de cron.deny file blank betekent dat alleen root en gebruikers worden vermeld in cron.allow kan crontab-bestanden hebben.

Zijn uw variabelen correct ingesteld?

Crontab stelt uw SHELL-variabele automatisch in op /bin/sh. Echter, als je shell van keuze is vis 7 redenen waarom u The Fish Shell zou moeten installerenVind je het niet leuk hoe je Linux-terminal werkt? Waarom installeer je geen nieuwe shell? Een van die schelpen is vis, die functies introduceert die alledaags hadden moeten worden, maar dat niet deden. Laten we kijken. Lees verder of bash, je moet de SHELL-variabele wijzigen. Evenzo bevat de variabele PATH standaard slechts enkele mappen. Hier zoekt crontab naar Linux-opdrachten. Als uw cron-taak niet wordt uitgevoerd, kan dit komen omdat crontab de opdracht die u hebt gebruikt niet ziet. Om dit te voorkomen, voegt u mappen met de opdrachten toe aan de variabele PATH, gescheiden door dubbele punten:

PATH = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Als u dit niet in uw crontab wilt bewerken, kunt u deze variabelen definiëren in het script dat u als cron-taak wilt uitvoeren.

Staat uw crontab-opmaak op punt?

De syntaxis van Crontab verloopt niet bepaald soepel. Zelfs als u het verifieert met de eerder genoemde online tools, kan een kleine fout nog steeds voorkomen dat cron uw taken uitvoert. Wees voorzichtig met:

  • voeg een lege regel toe aan het einde van het crontab-bestand
  • ontsnap aan het% -teken met een backslash als uw opdracht dit bevat
  • schrijf opmerkingen als afzonderlijke regels die beginnen met #. Schrijf geen opmerkingen op dezelfde regel als de omgevingsvariabelen of naast cron-opdrachtopdrachten.

Moet je de terminal echt gebruiken?

Absoluut niet. KDE-gebruikers kunnen cron-taken plannen met KCron, dat toegankelijk is via de Systeeminstellingen> Taakplanner module. Met een eenvoudige interface waarmee u alles in slechts enkele muisklikken kunt kiezen en aanpassen, is KCron een plezier om te gebruiken.

linux-cron-jobs-kcron

Als u GNOME verkiest, dan GNOME-schema is voor jou. De aanpak is vergelijkbaar, hoewel de interface naar verwachting enigszins anders is. Het biedt een geavanceerde modus voor verfijnde wijzigingen en wordt geleverd met een applet van waaruit u taken rechtstreeks kunt beheren.

linux-cron-jobs-gnome-schema

Je moet op de hoogte zijn van andere oplossingen, zoals Crontab-UI en Minicron. Ze zijn meer geschikt voor gebruikers die meerdere machines en cron-taken beheren, en een van hun coolste functies is de webgebaseerde interface.

linux-cron-jobs-crontabui

Zijn er alternatieven voor Cron?

Terwijl cron vrijwel de standaard is taakplanner voor Linux Plan en automatiseer taken in Linux met Gnome Schedule Lees verder , het is zeker niet de enige. De op bevel is perfect voor snelle, eenmalige taken die direct vanaf de opdrachtregel kunnen worden gepland, zonder speciale configuratiebestanden. Als je meer nodig hebt, is er GNUbatch, waarmee het begrip afhankelijkheid wordt geïntroduceerd. Met GNUbatch kunt u specifieke voorwaarden voor elke taak instellen of een geplande taak afhankelijk maken van een vorige. Iets soortgelijks kan worden bereikt met systemd timers. Hoewel minder praktisch om te configureren dan cron, kunnen systeemdimers onthouden of een taak het schema miste terwijl de computer uitstond, en deze de volgende keer uitvoeren.

Dit is iets dat cron niet alleen kan doen. Als zodanig is het geschikt voor servers en computers die constant actief zijn, maar het zal geen taak uitvoeren die was gepland terwijl de computer was uitgeschakeld. Dit is waar anacron komt in het spel. Het is technisch gezien geen "alternatief" of een vervanging voor cron. In plaats daarvan is anacron een aanvulling op cron en moet het daarnaast worden gebruikt, wat het geval is bij veel Linux-distributies, waaronder op Ubuntu en op Ubuntu gebaseerde producten. Anacron registreert wanneer een taak voor het laatst is uitgevoerd en controleert of er gevallen zijn gemist terwijl het systeem was uitgeschakeld. Het zal ze uitvoeren wanneer u de computer weer inschakelt, maar elke taak kan slechts één keer per dag worden uitgevoerd.

Sommige versies van cron, zoals fcron, bieden standaard de functies van anacron. Geavanceerde gebruikers willen er misschien naar kijken Hcron of SuperCron, die veel verbeteringen in de basis cron-functies brengen, maar ook enigszins uitdagend zijn om te beheren.

En jij dan? Hoe organiseert u uw digitale taken? Welke taken plant u op Linux? Deel uw verhalen en tips voor het gebruik van cron in de reacties.

Afbeelding tegoed: schema bord door Gonzalo Aragon via Shutterstock

Ivana Isadora is een freelance schrijver en vertaler, Linux-liefhebber en KDE fangirl. Ze ondersteunt en promoot gratis en open source software en ze is altijd op zoek naar frisse, innovatieve apps. Ontdek hier hoe u contact kunt opnemen.