Der er flere måder at køre et job med jævne mellemrum i et UNIX -system. Her er en sammenbrud af de mest almindelige metoder og deres forskelle:
1. Crontab
* Formål: Den mest anvendte metode til planlægning af opgaver. Det giver dig mulighed for at definere tidsplaner for kommandoer og scripts at køre med bestemte tidspunkter eller intervaller.
* hvordan det fungerer:
* Du opretter en crontab -fil, typisk i dit hjemmekatalog (`crontab -e`), der indeholder linjer med planlægningsoplysninger og kommandoen til at udføre.
* Hver linje har seks felter, der repræsenterer:minut, time, dag i måneden, måned, ugedag og kommando.
* Du kan bruge jokertegn (`*`, `?`, `-`, `/`) Til at repræsentere områder af værdier for disse felter.
* Eksempel:
`` `bash
# Kør et script hver dag kl. 3:00
0 3 * * * /path/to/your/script.sh
# Kør en kommando hvert 5. minut
*/5 * * * * Echo "kører hvert 5. minut"
`` `
* Fordele:
* Fleksible planlægningsmuligheder.
* Enkel og veldokumenteret.
* Kan bruges til en lang række opgaver.
* ulemper:
* Kræver rodadgang for at ændre den systemdækkende crontab.
* Kræver en Cron -dæmon, der kører i baggrunden.
* Kan være vanskelige at administrere komplekse tidsplaner.
2. ved kommando
* Formål: Bruges til planlægningsopgaver til at køre på et specifikt fremtidigt tidspunkt.
* hvordan det fungerer:
* Brug kommandoen 'ved' med en tidsstempel eller en relativ tid (f.eks. "I morgen kl. 17:00").
* Indtast den kommando eller script, du vil køre.
* Systemet gemmer jobbet og udfører det på det specificerede tidspunkt.
* Eksempel:
`` `bash
# Kør et script i morgen kl. 10:00
Kl. 10:00 i morgen
`` `
* Fordele:
* Let at bruge til engangsopgaver.
* Kræver ikke at oprette en Crontab -post.
* ulemper:
* Kun til enkelt fremtidige henrettelser, ikke tilbagevendende job.
* Begrænsede planlægningsmuligheder sammenlignet med Crontab.
3. Systemd timere
* Formål: Moderne systemd-baserede Linux-distributioner tilbyder en sofistikeret tilgang til planlægning af job.
* hvordan det fungerer:
* Du opretter en serviceenhedsfil (`/etc/systemd/system/your-job.timer`) med planlægningsoplysninger.
* Systemd-Timerd`-tjenesten overvåger disse timerenheder og udløser de tilsvarende tjenester på de specificerede tidspunkter.
* Eksempel:
`` `bash
[Enhed]
Beskrivelse =Kør et script hver time
Efter =Network-Online.Target
[Timer]
OnCalendar =*-*-*00:00:00
OnactiveseC =3600
[Service]
Type =enkel
Bruger =dit brugernavn
Execstart =/sti/til/your/script.sh
`` `
* Fordele:
* Integreret med SystemD og tilbyder omfattende funktioner.
* Mere robust og effektiv end Crontab.
* Tillader fleksible planlægningsmuligheder, herunder tidszoner og relativ planlægning.
* ulemper:
* Kræver fortrolighed med SystemD -enhedsfiler.
* Ikke så vidt brugt som Crontab, men at få popularitet.
4. Anacron
* Formål: Bruges til job, der skal køres med jævne mellemrum, selvom systemet ikke kører på det planlagte tidspunkt.
* hvordan det fungerer:
* `Anacron` kontroller for job, der er planlagt i`/etc/anacontab '.
* Hvis systemet ikke kørte på det planlagte tidspunkt, kører det jobbet, når det genstarter.
* Eksempel:
`` `bash
# Kør et script hver 3. dag
3 12 * * * /path/to/your/script.sh
`` `
* Fordele:
* Sikrer, at Jobs kører, selvom systemet ikke er oppe på det planlagte tidspunkt.
* ulemper:
* Mindre fleksibel planlægning end Crontab.
* Ikke altid nødvendigt, hvis systemet konsekvent kører.
Valg af den rigtige metode:
* crontab: Til tilbagevendende opgaver med specifikke tider og intervaller.
* på: Til engangsopgaver på et specifikt fremtidigt tidspunkt.
* systemd -timere: For moderne systemer med SystemD, der tilbyder avancerede planlægningsmuligheder.
* anacron: For job, der skal køre, selvom systemet ikke kørte på det planlagte tidspunkt.
Husk altid at teste dine planlagte job grundigt for at sikre, at de løber som forventet og undgår potentielle konflikter.