Een Cron- of Cron-taak is een op tijd gebaseerde planner die veel voorkomt in Linux/Unix-systemen. Het plant gespecificeerde gebruikerstaken om periodiek uit te voeren op een vaste datum, tijd of intervallen. De meeste van deze taken zijn scripts om functies zoals back-ups en meer uit te voeren. Om deze cron-taken te maken, gebruiken we de crontab-opdrachten. Een crontab is een UNIX-opdracht/hulpprogramma dat wordt gebruikt om cron-taken te maken en te beheren.
Zoals je hieronder zult zien, is het maken en bewerken van een cron-taak vrij eenvoudig. Het meest verbazingwekkende is dat je cron of zelfs je pc niet opnieuw hoeft te starten na het maken of bewerken van een cron-taak. Sla het bestand gewoon op en u bent klaar om te gaan.
Veelvoorkomend gebruik van Cron Jobs
- De hardwaretijd instellen: Het Network Time Protocol wordt door veel computers gebruikt om de systeemtijd in te stellen, maar niet om de hardwaretijd in te stellen. Met cron kunt u de hardwaretijd instellen op basis van de systeemtijd.
- Taken plannen en programma's uitvoeren met dagelijkse programma's: met de cron-service kunt u veel systeemservices uitvoeren die dagelijks een prompt nodig hebben, zoals Logwatch.
- Het automatisch opschonen van de directory, het uitvoeren van de back-upprogramma's en nog veel meer.
Basisonderdelen van een cron-opdracht
De standaard syntaxis van de crontab is als volgt:
a b c d e GEBRUIKERSNAAM /pad/naar/script uitvoer
1.De tijd en datum samen met hoe repetitief de taak zal zijn, worden gespecificeerd door de vijf velden:
-
- een: Minuten: (variërend van 0 - 59)
- b: Uren: (variërend van 0 - 23 )
- c: Dagen: (variërend van 0 - 31 )
- d: Maanden: (variërend van 0 - 12 )
- e: Dagen van de week: (variërend van 0 - 7. )
- een: Minuten: (variërend van 0 - 59)
Opmerking: de dagen beginnen met maandag. 0 en 7 vertegenwoordigen zondag
2. GEBRUIKERSNAAM
: Vergeet niet om dit te vervangen door uw gebruikersnaam
3. De specifieke locatie en het script dat door cron moet worden uitgevoerd, worden gespecificeerd door het derde segment:
/pad/naar/script
4. De laatste sectie definieert de melding aan de gebruiker bij voltooiing van de taak als een manier om taken bij te houden:
uitvoer
Uw inbox kan echter vol staan met kleine taken die vaak worden gekanaliseerd. Om dit te voorkomen, kunt u de automatische e-mailuitvoer uitschakelen door de onderstaande tekenreeks aan uw cron-opdracht toe te voegen:
>/dev/null 2>&1 e.g a b c d e GEBRUIKERSNAAM /pad/naar/script>/dev/null 2>&1
Bovendien gebruikt cron nog vier waarden die worden gebruikt bij het specificeren van meerdere waarden in een veld. Zij zijn:
- Asterisk (*): Verwijst naar alle waarden in een veld.
- de komma (,): Gebruiken om een lijst met waarden in cron-opdracht te scheiden.
- Dash (-): Specificeer een bereik van waarden.
- Schuine streep naar voren (/): verdeelt een waarde in verschillende stappen.
De cron-taken instellen
De crontab-opdrachten zijn verantwoordelijk voor het maken en bewerken van cron-taken, omdat de cron-bestanden niet rechtstreeks moeten worden bewerkt. De crontab definieert hoe u de cron-taken kunt maken, bewerken, weergeven, debuggen, installeren en verwijderen.
Voordat u aan de slag gaat met cron-taken, is het essentieel om ervoor te zorgen dat uw Linux-desktop of -server up-to-date is door de onderstaande opdrachten uit te voeren:
sudo apt update sudo apt upgrade
Als je het cron-pakket niet op je systeem hebt geïnstalleerd, installeer het dan met de onderstaande opdracht:
sudo apt-get install cron
Hoe het crontab-bestand te bewerken?
Om het proces te voltooien, moet u de cron-taak configureren. De gebruiker die is ingelogd wanneer een cron-taak wordt gemaakt, wordt automatisch de eigenaar. Dat kan worden veranderd door een taakeigenaar aan te maken die verantwoordelijk is voor het beheer van de cron-taak, zoals we in dit bericht zullen zien.
Om het crontab-configuratiebestand te openen voor de gebruiker die momenteel is ingelogd, voert u de onderstaande opdracht uit:
crontab -e
U wordt door het systeem gevraagd om een geschikte editor te kiezen. In ons geval zullen we de eerste optie kiezen (nano-editor).
U kunt één geplande taak per regel toevoegen volgens uw voorkeuren.
Na het toevoegen van de taken, sluit u af door het bestand op te slaan en af te sluiten. Alle gegeven instructies worden gelezen en uitgevoerd door de cron daemon. De wijzigingen worden zelfs toegepast zonder uw systeem opnieuw op te starten, aangezien de repository automatisch wordt bijgewerkt.
Crontab bewerken voor een andere gebruiker
Crontab kan voor verschillende gebruikers worden bewerkt met behulp van een opdracht in de onderstaande syntaxis:
crontab -u andere_gebruikersnaam -e
Speciale tekens gebruiken in crontab-opdrachten
Tekens en operators dicteren meer aanpassing van uw systeem omdat ze de mogelijkheden van een cron-taak uitbreiden.
- De schuine streep wordt gebruikt om een tijdreeks in gespecificeerde stappen te verdelen. Om bijvoorbeeld elke 30 minuten een back-up uit te voeren, kunnen we het volgende gebruiken:
*/30 * * * *
- De asterisk(*) wordt gebruikt om alle uit te voeren waarden uit te voeren. Bijvoorbeeld:
*/15***
- Het streepje (-) wordt gebruikt om het bereik van activiteiten te bepalen, zoals het aantal dagen. Voor
als we de code bijvoorbeeld elke weekdag om 6 uur uitvoeren, gebruiken we;
0 6* * 1-5 /root/back-up.sh
Hier staat 06 voor 6 uur. 1-5 staat voor het aantal dagen (maandag t/m vrijdag).
- Een komma geeft de afzonderlijke instanties aan waarin de code moet worden uitgevoerd:
0 4 * * 2,4 /root/back-up.sh
De bovenstaande opdracht zou uw scriptcode op dinsdag en donderdag om 4 uur 's ochtends uitvoeren.
- U kunt ook verschillende jokertekens combineren om uw opdrachten nog meer aan te passen. Om ons script bijvoorbeeld om de dag om 35 minuten over het hele uur uit te voeren, kunnen we de onderstaande opdracht gebruiken:
35 1-23/2 * * * /pad/naar/script/script.sh
1-23 specificeert het bereik van uren, /2 stelt het interval in op elk ander uur.
Cron-opties
- Alle cron-taken weergeven
Misschien wilt u de cron-taken in uw systeem weergeven zonder het crontab-configuratiebestand te ontgrendelen. Dit kan worden gedaan door uw terminal te starten en de onderstaande opdracht te typen:
crontab -l
Dat commando geeft een overzicht van alle cron-taken die in uw systeem aanwezig zijn.
- Alle crontab-taken verwijderen
Om alle crontab-opdrachten te verwijderen, kun je de onderstaande opdracht gebruiken:
crontab -r
- Een cron-taak verwijderen voor een andere gebruiker.
crontab -r -u andere-gebruikersnaam
Strings gebruiken in Crontab
Strings zijn enorm nuttige hulpmiddelen voor ontwikkelaars omdat ze het herhaaldelijk schrijven van codesegmenten vermijden. Gelukkig ondersteunen crontabs verschillende tekenreeksen. Ze bevatten:
@uur:
-hetzelfde als - “0 * * * *“ ( Wordt elke keer uitgevoerd uur)@middernacht:
-hetzelfde als - “0 0 * * *“ ( Wordt elke keer uitgevoerd dag)@dagelijks:
hetzelfde als middernacht@wekelijks:
-hetzelfde als - "0 0 * * 0" (wordt elke keer uitgevoerd week)@maandelijks:
-hetzelfde als - “0 0 1 * *“ ( Wordt elke keer uitgevoerd maand)@jaarlijks:
-hetzelfde als - “0 0 1 1 *“ ( Wordt elke keer uitgevoerd jaar)@jaarlijks:
gelijk aan @annual@herstart:
Eenmaal uitgevoerd na elke herstart/herstart/opstart.
Een goed voorbeeld; als je een back-upscript hebt dat je elke dag wilt uitvoeren, gebruik dan de onderstaande opdracht:
@daily /pad/naar/backup_script.sh
Voorbeelden van cron-taken
Hier is een lijst met standaard cron-taken die kunnen worden gebruikt om aan de slag te gaan:
-
- Elke minuut een script uitvoeren:
* * * * * /uw/script/pad.sh
- Elke 40 minuten een script uitvoeren:
40 * * * * /uw/script/pad.sh
- Elk uur een script uitvoeren:
0 * * * * /uw/script/pad.sh
- Om elke middernacht een script uit te voeren:
0 0 * * * /uw/script/pad.sh
- Om elke 23 minuten na middernacht, 2 uur en 4 uur elke dag een script uit te voeren:
23 0-23/2 * * * /uw/script/pad.sh
- Een script uitvoeren op 4.05 elke zondag.
5 4 * * zon /uw/script/pad.sh
- Om doordeweeks om 22.00 uur een script te draaien.
0 22 * * 1-5 /uw/script/pad.sh
- Een script uitvoeren op 1 december - middernacht.
0 0 0 12 * /uw/script/pad.sh
- Een script draaien op zaterdag om middernacht Saturday.
0 0 * * 6 /uw/script/pad.sh
- Elk uur een script uitvoeren.
0 * * * * /uw/script/pad.sh
- Elke minuut een script uitvoeren:
Met deze basisvoorbeelden krijgt u een dieper begrip van de reeks en hoe deze kan worden gewijzigd.
Cron-toegang beperken
We zien dat cron-jobs best van pas kunnen komen, vooral als je je taken wilt automatiseren. Het kan echter ook riskant zijn als het systeem elke gebruiker toestaat een cron-taak te maken. Zelfs als het geen invloed heeft op persoonlijke gegevens, kunnen sommige cron-taken behoorlijk wat systeembronnen in beslag nemen, waardoor de pc achterblijft. Om dergelijke scenario's te vermijden, kan de systeembeheerder (rootgebruiker) een /etc/cron.toestaan
of /etc/cron.ontkennen
het bestand dat alleen gebruikers bevat die kunnen 'maken/niet-maken' een cronjob.
De /etc/cron.toestaan
het bestand bevat gebruikers die crontab-bestanden kunnen maken, bewerken, weergeven of verwijderen. Als dit bestand niet bestaat, kunnen alle gebruikers andere cron-taken maken en beheren dan die in de /etc/cron.ontkennen
het dossier. Als geen van deze bestanden aanwezig is, zijn superuser-privileges vereist om de opdracht crontab uit te voeren.
Nu je hebt voorkomen dat niet-root-gebruikers cron-taken maken als ze die al hadden, kun je overwegen hun cron-taken toe te voegen aan het root-crontab-bestand. Maar hier is een puzzel - Door hun cron-jobs toe te voegen aan de root-crontab, draaien hun cron-jobs niet als root? Welnu, hier komt het belang van het veld USERNAME dat we hierboven hebben besproken in de cron-opdrachtsyntaxis. Bijvoorbeeld het onderstaande commando:
0 * * * * fosslinux /pad/naar/script.sh
Zal draaien als gebruiker "fosslinux" cron job en niet als de root gebruiker.
Conclusie
U hebt nu een duidelijke handleiding over het gebruik van Cron-taken om verschillende taken op uw systeem te automatiseren. Dat zou u niet moeten verwarren met Opstarttoepassingen. Gebruik de bovenstaande voorbeelden om eenvoudige scripts te automatiseren. Na verloop van tijd kun je speciale karakters en jokertekens combineren om veel meer alledaagse taken uit te voeren. Als je net begint, zou het geweldig zijn om ons bericht over de bash-scripting-tutorial te lezen met voorbeelden die je zullen helpen bij het maken van je eerste script.