1. Hem
  2. cPanel/WHM
  3. Hur skapar jag cronjobb?

Hur skapar jag cronjobb?

Komma igång med cron

I cPanel finns Cron-hantering under kategorin Avancerat.

Välj tidpunkt då du vill att cron-jobbet skall köras och fyll i ditt kommando och klicka sedan på knappen Lägg till nytt cron-jobb.

Kommandot ska ha detta format:

/sökväg/till/programmet /home/dittanvändarnamn/sökväg_till_scriptet > /dev/null 2>&1

Om du till exempel ska köra ett PHP-script kan det ser ut så här:

/etc/cl.selector/php /home/dittanvändarnamn/script.php > /dev/null 2>&1

Vill du använda en specifik PHP-version i cronjobbet kan du ange /opt/alt/php73/usr/bin/php istället för /etc/cl.selector/php.

Du kan själv välja vilken PHP-version som körs i genom att byta ut 73 i kommandot ovan till en annan PHP-version (till exempel 70 om du vill använda PHP 7.0).

Cronjobb mot hemsida/URL

Om du använder ett system på din hemsida som behöver cronjobb som körs mot en viss URL så kan du inte bara lägga in URL’en som kommando i cronjobbet, utan du behöver använda kommandot wget. Detta säger till servern att besöka URL’en när cronjobbet körs, precis som om du hade surfat mot den själv via en webbläsare. Du anger alltså kommandot enligt följande:

wget -O /dev/null -o /dev/null "https://www.mindomän.se/kommandot"

Byt ut https://www.mindomän.se/kommandot mot den fullständiga adressen som man surfar mot för att köra jobbet. Glöm inte att ha kvar citationstecknen, annars är risken stor att det inte kommer fungera.

Hantera output

Du kan välja att det ska skickas ett mail till dig varje gång cron-jobbet körs, detta kan vara bra om du printar ut info om till exempel huruvida jobbet utfördes korrekt eller inte. Det kan även vara bra i felsökningssyfte, om cron-jobbet inte fungerar som du ska kan du få ut värdefulla felmeddelanden på det viset. Du kommer dock behöva ta bort ”> /dev/null 2>&1” för att det ska fungera så att det istället ser ut så här:

/etc/cl.selector/php -q /home/dittanvändarnamn/sökväg_till_scriptet.php

Sedan kan du i fältet E-post ange den e-postadress som du vill att mailen ska skickas till.

OBS! Om du ska köra wget med ett cron-jobb och inte vill att det ska genereras någon output behöver du skicka båda -o och -O till /dev/null, t.ex:

wget -O /dev/null -o /dev/null "https://www.mindomän.se"

Överlappande cron-jobb

Ett problem som ofta uppstår är att man inte vet exakt hur länge cron-jobbet behöver köras. T.ex. om du har ett cron-jobb som körs klart på tre minuter och det körs var femte minut. Det är inga problem, då hinner det alltid köras klart innan det körs igång igen. Men tänk om det körs var femte minut men ibland tar det sju minuter innan det hinner klart. Då kommer cron-jobbet hinna köras ännu en gång innan den föregående körningen är klar. Detta kan orsaka alla möjliga problem och är något som vi vill undvika.

Det finns dock en lösning och det är Flock. Flock skapar en låsfil när cron-jobbet körs igång, om den låsfilen finns kvar även vid nästa körning så kommer ditt kommando inte köras. När ditt cron-jobb har kört klart så försvinner låsfilen.

Du kan använda Flock t.ex. så här:

/usr/bin/flock -w 1 /tmp/cron.lock /etc/cl.selector/php -q /home/dittanvändarnamn/sökväg_till_scriptet.php

/usr/bin/flock är sökvägen till Flock-binären och /tmp/cron.lock är sökvägen till låsfilen, inget av detta behöver ändras. Allt efter låsfilen är vad du vill köra med cron-jobbet så det behöver du såklart anpassa efter dina behov.

Hjälpte den här guiden dig?

Relaterade guider

Behöver du mer hjälp?
Kan du inte hitta lösningen på ditt problem? Då kan du kontakta oss via e-post, chatt och telefon!
Kontakta oss