Cron

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

cron - Schemaläggning av uppgifter

`cron` är en daemon som används för att köra schemalagda uppgifter vid specifika tider eller intervaller i Unix-liknande operativsystem.

Syntax

cron

Beskrivning

`cron`-demonen körs i bakgrunden och kontrollerar schemalagda uppgifter i `crontab`-filer. Dessa filer innehåller listor över kommandon och den tidpunkt då de ska köras. Varje användare kan ha en egen `crontab`-fil, och det finns också systemomfattande `crontab`-filer.

Crontab-syntax

En `crontab`-fil innehåller rader med uppgiftsspecifikationer och kommandon. Varje rad har följande format:


* * * * * kommando

Fälten representerar:

  • Minut (0-59)
  • Timme (0-23)
  • Dag i månaden (1-31)
  • Månad (1-12)
  • Dag i veckan (0-7) (0 och 7 är båda söndag)

Exempel:

  • För att köra ett skript varje dag kl. 3:30:

30 3 * * * /path/to/script.sh

  • För att köra ett skript varje måndag kl. 7:00:

0 7 * * 1 /path/to/script.sh

  • För att köra ett skript varje timme:

0 * * * * /path/to/script.sh

Crontab-kommandon

`crontab`-kommandot används för att installera, ta bort eller lista schemalagda uppgifter för användare.

  • -e, --edit - Redigera användarens `crontab`-fil med standardredigeraren.
  • -l, --list - Lista innehållet i användarens `crontab`-fil.
  • -r, --remove - Ta bort användarens `crontab`-fil.
  • -i, --interactive - Begär bekräftelse innan `crontab`-filen tas bort.
  • -u ANVÄNDARE - Ange `crontab`-filen för en specifik användare (endast root).
  • --help - Visa hjälpmeddelande och avsluta.
  • --version - Visa versionsinformation och avsluta.

Exempel på crontab-kommandon

Här är några praktiska exempel som visar hur du kan använda `crontab`-kommandot:

  • För att redigera din egen `crontab`-fil:

crontab -e

  • För att lista innehållet i din egen `crontab`-fil:

crontab -l

  • För att ta bort din egen `crontab`-fil:

crontab -r

  • För att redigera `crontab`-filen för en specifik användare (som root):

sudo crontab -u användarnamn -e

  • För att ta bort `crontab`-filen för en specifik användare (som root):

sudo crontab -u användarnamn -r

Skillnader mellan macOS och Linux

Det finns några skillnader att tänka på när man använder `cron` på macOS jämfört med Linux:

  • Standardinstallationer: `cron` är vanligtvis förinstallerat både på macOS och de flesta Linux-distributioner.
  • `launchd` på macOS: macOS använder `launchd` som sitt init-system, vilket kan hantera schemaläggning via `launchctl`. `cron` kan fortfarande användas, men Apple rekommenderar användning av `launchd` för nya schemaläggningsuppgifter.
  • `anacron` på Linux: På vissa Linux-system används `anacron` tillsammans med `cron` för att säkerställa att schemalagda uppgifter körs även om datorn var avstängd vid den schemalagda tidpunkten.

Exempel på att använda `launchd` på macOS:

  • Skapa en plists-fil för schemaläggning:

sudo nano /Library/LaunchDaemons/com.example.task.plist

  • Lägg till följande innehåll för att köra ett skript dagligen kl. 3:30:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.example.task</string>
  <key>ProgramArguments</key>
  <array>
    <string>/path/to/script.sh</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>3</integer>
    <key>Minute</key>
    <integer>30</integer>
  </dict>
</dict>
</plist>

  • Ladda plists-filen:

sudo launchctl load /Library/LaunchDaemons/com.example.task.plist

Det är alltid bra att konsultera dokumentationen för `cron` eller `launchd` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga och hur de används.

Felsökning

Om dina schemalagda uppgifter inte körs som förväntat, kontrollera följande:

  • Att `cron`-demonen körs (kan kontrolleras med `systemctl status cron` på Linux).
  • Att `crontab`-filen är korrekt formaterad och inte innehåller syntaxfel.
  • Att rättigheter och ägarskap för skript och filer är korrekt inställda.
  • För `launchd`-baserade uppgifter, kontrollera att plists-filen är korrekt formaterad och laddad.

Se även

  • crontab - Installera, visa och ta bort schemalagda uppgifter.
  • at - Schemalägg kommandon för en engångskörning.
  • launchctl - Hantera schemaläggning och tjänster på macOS.
  • systemd.timer - Använd systemd-timers för schemaläggning på moderna Linux-distributioner.

Källor