Opprette cron-jobber på VPS via SSH

Cron-jobber brukes til å kjøre kommandoer eller skript automatisk på bestemte tidspunkt. Dette kan for eksempel være vedlikeholdsskript, backup, opprydding av filer eller PHP-skript som skal kjøres med jevne mellomrom.

På en VPS kan du sette opp cron-jobber selv via SSH.

Før du begynner

Du må ha:

  • tilgang til VPS-en via SSH
  • en bruker med riktige rettigheter
  • kommandoen eller skriptet du vil kjøre
  • riktig filsti til skriptet på serveren

Tips: Bruk alltid absolutte filstier i cron-jobber. Det gjør oppsettet mer stabilt og enklere å feilsøke.

Steg 1: Koble til VPS-en via SSH

Logg inn på VPS-en med SSH.

Eksempel:

ssh brukernavn@server-ip

Bytt ut brukernavn og server-ip med brukernavn og IP-adresse for din VPS.

Steg 2: Vis eksisterende cron-jobber

Du kan se cron-jobbene som allerede er lagt inn for brukeren med:

crontab -l

Hvis brukeren ikke har noen cron-jobber fra før, vil du få beskjed om at det ikke finnes noen crontab.

Steg 3: Rediger crontab

For å opprette eller endre cron-jobber bruker du:

crontab -e

Første gang du åpner crontab, kan du bli bedt om å velge teksteditor. Velg for eksempel nano hvis du ønsker en enkel editor.

Steg 4: Legg inn cron-jobben

En cron-jobb består av en tidsplan og en kommando som skal kjøres.

Formatet ser slik ut:

* * * * * kommando

Feltene betyr:

# .---------------- minutt (0 - 59)
# | .-------------- time (0 - 23)
# | | .------------ dag i måneden (1 - 31)
# | | | .---------- måned (1 - 12)
# | | | | .-------- ukedag (0 - 7, der 0 og 7 er søndag)
# | | | | |
# * * * * * kommando

Eksempel: Kjør et PHP-skript hver time:

0 * * * * /usr/bin/php /var/www/html/cron/cron.php > /dev/null 2>&1

I dette eksempelet kjøres filen /var/www/html/cron/cron.php én gang i timen.

Bytt ut filstien med riktig sti til skriptet på din egen VPS.

Vanlige eksempler

Kjør et skript hvert femte minutt:

*/5 * * * * /usr/bin/php /var/www/html/cron/cron.php > /dev/null 2>&1

Kjør et skript hver dag kl. 02:00:

0 2 * * * /usr/bin/php /var/www/html/cron/cron.php > /dev/null 2>&1

Kjør et skript hver mandag kl. 03:30:

30 3 * * 1 /usr/bin/php /var/www/html/cron/cron.php > /dev/null 2>&1

Logge output fra cron-jobben

I eksemplene over sendes output til /dev/null. Det betyr at output fra kommandoen forkastes.

Hvis du vil lagre output i en loggfil i stedet, kan du sende det til en fil:

0 * * * * /usr/bin/php /var/www/html/cron/cron.php >> /tmp/cron.log 2>&1

Dette kan være nyttig når du tester eller feilsøker en cron-jobb.

Merk: Sørg for at brukeren som kjører cron-jobben har skrivetilgang til loggfilen eller mappen du logger til.

Steg 5: Lagre og lukk editoren

Hvis du bruker nano, lagrer du med:

Ctrl + O

Trykk deretter Enter, og lukk editoren med:

Ctrl + X

Cron-jobben blir aktiv så snart crontab-filen er lagret.

Test cron-jobben

Før du legger inn en kommando i crontab, bør du teste kommandoen direkte i terminalen.

Eksempel:

/usr/bin/php /var/www/html/cron/cron.php

Hvis kommandoen ikke fungerer manuelt, vil den heller ikke fungere som cron-jobb.

Feilsøking

Hvis cron-jobben ikke kjører som forventet, kan du sjekke dette:

  • Bruker du absolutte filstier?
  • Har brukeren riktige rettigheter til filen som skal kjøres?
  • Fungerer kommandoen når du kjører den manuelt?
  • Bruker du riktig PHP-sti, for eksempel /usr/bin/php?
  • Logger du output til en fil du har tilgang til?
  • Er serverens tidssone riktig?

Du kan sjekke hvor PHP ligger med:

which php

Bruk resultatet fra kommandoen i cron-jobben hvis PHP ligger et annet sted enn /usr/bin/php.

Oppsummering

Cron-jobber er nyttige når du vil automatisere oppgaver på VPS-en din. Med crontab -e kan du legge inn kommandoer som skal kjøres automatisk, for eksempel hvert minutt, hver time eller én gang om dagen.

Bruk absolutte filstier, test kommandoen manuelt først, og logg output til en fil hvis du trenger å feilsøke.

Var denne artikkelen nyttig?

Fant du ikke det du trengte?

Chat med oss

Trenger du hjelp? Chat med oss direkte hverdager mellom kl. 8:30-16:30

Snakk med oss

Du kan ringe oss direkte på hverdager mellom kl. 09:00-15:00