Er zijn verschillende manieren om periodiek een baan in een UNIX -systeem uit te voeren. Hier is een uitsplitsing van de meest voorkomende methoden en hun verschillen:
1. crontab
* Doel: De meest gebruikte methode voor het plannen van taken. Hiermee kunt u schema's definiëren voor opdrachten en scripts om op specifieke tijdstippen of intervallen uit te voeren.
* hoe het werkt:
* U maakt een Crontab -bestand, meestal in uw thuismap (`Crontab -e`), die regels bevat met planningsinformatie en de opdracht om uit te voeren.
* Elke lijn heeft zes velden die vertegenwoordigen:minuut, uur, dag van maand, maand, dag van week en commando.
* U kunt jokertekens gebruiken (`*`, `?`, `-`,`/`) om waardenbereiken voor deze velden weer te geven.
* Voorbeeld:
`` `bash
# Voer elke dag een script uit om 3:00 uur
0 3 * * * /path/to/your/script.sh
# Voer elke 5 minuten een opdracht uit
*/5 * * * * echo "elke 5 minuten lopen"
`` `
* profs:
* Flexibele planningsopties.
* Eenvoudig en goed gedocumenteerd.
* Kan worden gebruikt voor een breed scala aan taken.
* nadelen:
* Vereist worteltoegang om de systeembrede crontab te wijzigen.
* Vereist een Cron -daemon die op de achtergrond draait.
* Kan moeilijk zijn om complexe schema's te beheren.
2. bij commando
* Doel: Gebruikt voor het plannen van taken om op een specifieke toekomstige tijd uit te voeren.
* hoe het werkt:
* Gebruik de opdracht `at` met een tijdstempel of een relatieve tijd (bijv." Morgen om 17:00 ").
* Voer het opdracht of script in dat u wilt uitvoeren.
* Het systeem slaat de taak op en voert deze op het opgegeven tijdstip uit.
* Voorbeeld:
`` `bash
# Voer morgen om 10:00 uur een script uit
morgen om 10:00 uur
`` `
* profs:
* Gemakkelijk te gebruiken voor eenmalige taken.
* Vereist niet het maken van een crontab -vermelding.
* nadelen:
* Alleen voor enkele toekomstige executies, geen terugkerende banen.
* Beperkte planningsopties in vergelijking met Crontab.
3. Systemd Timers
* Doel: Moderne op SystemD gebaseerde Linux-distributies bieden een verfijnde aanpak voor het plannen van banen.
* hoe het werkt:
* U maakt een Service Unit-bestand (`/etc/Systemd/System/System/Your------timer`)) met planningsinformatie.
* De `Systemd-Timerd`-services-bewaakt deze timer-eenheden en activeert de overeenkomstige services op de opgegeven tijdstip.
* Voorbeeld:
`` `bash
[Eenheid]
Beschrijving =Voer elk uur een script uit
After =Network-Online.target
[Timer]
Oncalendar =*-*-*00:00:00
OnActiveSec =3600
[Dienst]
Type =eenvoudig
Gebruiker =uw gebruikersnaam
Execstart =/path/to/your/script.sh
`` `
* profs:
* Geïntegreerd met SystemD en biedt uitgebreide functies.
* Robuuster en efficiënter dan crontab.
* Maakt flexibele planningsopties mogelijk, inclusief tijdzones en relatieve planning.
* nadelen:
* Vereist bekendheid met SystemD -unitbestanden.
* Niet zo veel gebruikt als Crontab, maar populair worden.
4. Anacron
* Doel: Gebruikt voor taken die periodiek moeten worden uitgevoerd, zelfs als het systeem niet op de geplande tijdstip wordt uitgevoerd.
* hoe het werkt:
* `Anacron` checkt op banen gepland in`/etc/anacrontab`.
* Als het systeem niet op het geplande tijdstip werd uitgevoerd, werkt het de taak wanneer het opnieuw wordt gestart.
* Voorbeeld:
`` `bash
# Voer elke 3 dagen een script uit
3 12 * * * /path/to/your/script.sh
`` `
* profs:
* Zorgt ervoor dat banen worden uitgevoerd, zelfs als het systeem niet op de geplande tijdstip is.
* nadelen:
* Minder flexibele planning dan crontab.
* Niet altijd nodig als het systeem consequent draait.
De juiste methode kiezen:
* crontab: Voor terugkerende taken met specifieke tijden en intervallen.
* op: Voor eenmalige taken op een specifieke toekomstige tijd.
* Systemd Timers: Voor moderne systemen met SystemD, het aanbieden van geavanceerde planningsopties.
* Anacron: Voor banen die moeten worden uitgevoerd, zelfs als het systeem niet op het geplande tijdstip draaide.
Vergeet niet om uw geplande banen grondig te testen om ervoor te zorgen dat ze worden uitgevoerd zoals verwacht en mogelijke conflicten te voorkomen. |