Kapitel 15 · 15.1
Cron-jobb: låt uppgifter köras automatiskt
Se det i en kort film
Ett cron-jobb (eller cronjob) är ett kommando som servern kör åt dig vid fasta tider. Till exempel ett skript som varje natt städar upp gammal data, en koppling till ditt bokföringssystem varje timme, eller de schemalagda uppgifterna i WordPress eller Laravel. Du ställer in det under Cron-jobb, under Avancerade funktioner.

Regler hos WebOké
En server delar du med andra webbplatser. Därför gäller regler för cron-jobb:
- Låt ett jobb starta högst en gång var 10:e minut. Det ber vi alla om. Servern tvingar inte fram detta, men ett jobb som körs oftare gör servern långsammare för dig och andra. Har du flera jobb, låt dem då inte alla starta samtidigt.
- Håll ett jobb kort. Behöver mycket göras, dela då upp arbetet på flera omgångar.
Skapa ett jobb
- Klicka i DirectAdmin under Avancerade funktioner på Cron-jobb.
- Klicka på SKAPA CRON-JOBB.
- Fyll i Minut, Timme, Dag i månaden, Månad och Veckodag för när jobbet ska köras (1). En asterisk * betyder "varje".
- Under tidsfälten ser du vid Cron-jobbet körs: (2) i vanligt språk när jobbet körs. Kontrollera det.
- Skriv vid Kommando (3) vad som ska hända, med fullständiga sökvägar (se nedan).
- Vill du inte ha mejl efter varje gång? Klicka på UNDVIK E-POST (4).
- Klicka på SKAPA (5).

Jobbet står därefter i listan. Vill du ta bort det, bocka för det (1) och klicka på Ta bort.

Exempel på tider
| Minut | Timme | Dag i månaden | Månad | Veckodag | Betydelse |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Varje dag klockan 03:30 |
| */10 | * | * | * | * | Var 10:e minut |
| 0 | * | * | * | * | Varje hel timme |
| 15 | 8 | * | * | 1-5 | På vardagar klockan 08:15 (1 är måndag, 0 eller 7 är söndag) |
| 0 | 2 | 1 | * | * | Den första dagen i varje månad klockan 02:00 |
Du kan separera värden med komman (1,15,30), ange ett intervall med ett bindestreck (5-7) och ett intervall med */ (*/2 är varannan). Välj helst en lugn, slumpmässig tidpunkt, till exempel 03:17 istället för exakt midnatt.
Kommandot: fullständiga sökvägar
Ett cron-jobb vet inte i vilken mapp det ska börja. Använd därför alltid fullständiga sökvägar. Ditt paket ligger på servern i /home/ följt av ditt DA-användarnamn (se Hitta ditt servernamn och DA-användarnamn).
Starta ett PHP-skript:
/usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/public_html/taak.php
Detta använder samma PHP-version som din webbplats, alltså versionen från Select PHP version (se PHP-versionen välja (Select PHP version)).
Anropa en webbadress (till exempel om din programvara ger en cron-URL):
curl --silent https://www.jouwdomein.nl/cron.php > /dev/null
WordPress: WordPress startar som standard sina schemalagda uppgifter när en besökare kommer. Vid en hårt belastad webbplats eller en webbplats med lite besök kan det vara bättre att göra det med ett cron-jobb. Lägg då till define('DISABLE_WP_CRON', true); i wp-config.php och skapa ett jobb som var 15:e minut startar /usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/artisan schedule:run. Observera: schedule:run kör bara uppgifter som precis faller på tidpunkten för cronet. Körs cronet var 10:e minut, körs ett jobb som är schemalagt till 08:05 aldrig.
E-post efter varje jobb
Ger ett jobb utdata (text eller ett felmeddelande), kan servern skicka det via e-post. Det sker bara om du har ställt in en adress. Du har tre möjligheter:
- E-post till en egen adress: klicka på SKICKA ALL CRON-UTDATA TILL E-POST, fyll i en e-postadress och klicka på SPARA. Det gäller för alla dina jobb. Lämnar du fältet tomt kommer inget mejl.
- Inget mejl för ett jobb: klicka vid skapandet på UNDVIK E-POST. Då läggs >/dev/null 2>&1 till efter ditt kommando och utdata från det jobbet försvinner, även om du har ställt in en adress.
- Utdata i en loggfil: lägg till >> /home/gebruikersnaam/cron-log.txt 2>&1 efter ditt kommando. Då ser du senare i Filhanteraren vad jobbet gjorde. Städa en sådan fil då och då.

Tips: Ställ in en adress så länge du testar ett nytt jobb. Så ser du direkt om det fungerar. Stäng av det sedan eller skicka utdata till en loggfil. Mejl från cron-jobb räknas med i sändgränsen för ditt paket (se Sändningsgränser och meddelandet 'message limit reached').
Vanliga frågor
Mitt jobb ger "Could not open input file".
Sökvägen till skriptet stämmer inte. Kontrollera den fullständiga sökvägen i Filhanteraren: den börjar med /home/gebruikersnaam/domains/.
Mitt skript fungerar i webbläsaren, men inte som cron-jobb.
Ett skript som körs via cron vet inte under vilken webbplats det körs: $_SERVER['SERVER_NAME'] och $_SERVER['DOCUMENT_ROOT'] är tomma och relativa sökvägar i include fungerar annorlunda. Använd fullständiga sökvägar i skriptet, eller anropa skriptet via curl med webbadressen.
Kan jag se när ett jobb har körts?
DirectAdmin håller inte reda på det åt dig. Låt därför jobbet skriva sin utdata till en loggfil, med datumet i den (till exempel date >> /home/gebruikersnaam/cron-log.txt som första kommando, med ; emellan).
Vad gör Kör vid @reboot?
Då körs jobbet bara när servern startar om, och inte vid fasta tider. Det behöver du nästan aldrig för en webbplats.
