Cron
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.