Det finns flera sätt att köra ett jobb med jämna mellanrum i ett UNIX -system. Här är en uppdelning av de vanligaste metoderna och deras skillnader:
1. CRONTAB
* Syfte: Den mest använda metoden för schemaläggningsuppgifter. Det låter dig definiera scheman för kommandon och skript för att köra vid specifika tider eller intervaller.
* Hur det fungerar:
* Du skapar en CRONTAB -fil, vanligtvis i din hemkatalog (`CRONTAB -E '), som innehåller rader med schemaläggningsinformation och kommandot att köra.
* Varje rad har sex fält som representerar:minut, timme, dag i månaden, månaden, veckodagen och kommandot.
* Du kan använda jokertecken (`*`, `?`, `-',`/`) För att representera värderingsområden för dessa fält.
* Exempel:
`` `bash
# Kör ett skript varje dag klockan 3:00
0 3 * * /path/to/your/script.sh
# Kör ett kommando var femte minut
*/5 * * * * echo "Kör var femte minut"
`` `
* pros:
* Flexibla schemaläggningsalternativ.
* Enkel och väl dokumenterad.
* Kan användas för en mängd olika uppgifter.
* nackdelar:
* Kräver rotåtkomst för att modifiera den systemomfattande CRONTAB.
* Kräver en cron -demon som körs i bakgrunden.
* Kan vara svårt att hantera komplexa scheman.
2. vid kommandot
* Syfte: Används för att schemalägga uppgifter för att köras vid en specifik framtida tid.
* Hur det fungerar:
* Använd kommandot "at" med en tidsstämpel eller en relativ tid (t.ex. "imorgon kl 17:00").
* Ange kommandot eller skriptet du vill köra.
* Systemet lagrar jobbet och kör det vid den angivna tiden.
* Exempel:
`` `bash
# Kör ett manus imorgon kl. 10:00
Klockan 10:00 imorgon
`` `
* pros:
* Lätt att använda för engångsuppgifter.
* Kräver inte att du skapar en CRONTAB -post.
* nackdelar:
* Endast för enstaka framtida avrättningar, inte återkommande jobb.
* Begränsade schemaläggningsalternativ jämfört med CRONTAB.
3. Systemd Timers
* Syfte: Moderna systemd-baserade Linux-distributioner erbjuder en sofistikerad strategi för schemaläggningsjobb.
* Hur det fungerar:
* Du skapar en serviceenhetsfil (`/etc/Systemd/System/Your-Job.Timer`) med schemaläggningsinformation.
* Systemd-Timerd`-tjänsten övervakar dessa timerenheter och utlöser motsvarande tjänster vid de angivna tiderna.
* Exempel:
`` `bash
[Enhet]
Beskrivning =Kör ett skript varje timme
After =Network-Online.Target
[Timer]
Oncalendar =*-*-*00:00:00
Onactivesec =3600
[Service]
Typ =enkel
Användare =ditt användarnamn
ExecStart =/path/to/your/script.sh
`` `
* pros:
* Integrerad med systemd, erbjuder omfattande funktioner.
* Mer robust och effektiv än CRONTAB.
* Tillåter flexibla schemaläggningsalternativ, inklusive tidszoner och relativ schemaläggning.
* nackdelar:
* Kräver kännedom om Systemd -enhetsfiler.
* Inte lika allmänt använt som CRONTAB, utan att få popularitet.
4. Anacron
* Syfte: Används för jobb som behöver köras regelbundet även om systemet inte körs vid schemalagd tid.
* Hur det fungerar:
* `Anacron` kontrollerar jobb som är planerade i`/etc/Anacrontab`.
* Om systemet inte körs vid den schemalagda tiden kör det jobbet när det startar om.
* Exempel:
`` `bash
# Kör ett skript var tredje dag
3 12 * * * /path/to/your/script.sh
`` `
* pros:
* Säkerställer att jobb körs även om systemet inte är uppe vid den schemalagda tiden.
* nackdelar:
* Mindre flexibel schemaläggning än CRONTAB.
* Inte alltid nödvändigt om systemet konsekvent körs.
Att välja rätt metod:
* crontab: För återkommande uppgifter med specifika tider och intervaller.
* AT: För engångsuppgifter vid en specifik framtida tid.
* Systemd Timers: För moderna system med SystemD, erbjuda avancerade schemaläggningsalternativ.
* Anacron: För jobb som behöver köras även om systemet inte körs vid schemalagd tid.
Kom alltid ihåg att testa dina schemalagda jobb noggrant för att säkerställa att de körs som förväntat och undviker eventuella konflikter.