På denne siden

Dette kapittelet dekker to former for automatisering: planlagte oppgaver med cron, og små shell-skript som samler kommandoer.

cron — planleggeren

cron kjører kommandoer etter en tidsplan. Det er en tjeneste som er aktiv som standard på de fleste distroer. Hver bruker har sin egen crontab — en fil som lister hva som skal kjøres og når.

crontab — administrer planlagte oppgaver

Rediger crontab-en din:

$ crontab -e

Dette åpner teksteditoren din med en tom crontab. List den:

$ crontab -l

Hver linje har fem tidsfelt etterfulgt av kommandoen:

minute hour day-of-month month day-of-week  command
 0      2    *            *         *        /usr/bin/backup.sh

Linjen over kjører /usr/bin/backup.sh hver dag kl. 02:00.

Felt Område
minute 0–59
hour 0–23
day of month 1–31
month 1–12
day of week 0–7 (0 og 7 er søndag)

* betyr «alle». Eksempler:

# hver dag kl. 02:00
0 2 * * * /usr/bin/backup.sh

# hver time, på minutt 30
30 * * * * /home/user/check.sh

# hver mandag kl. 09:00
0 9 * * 1 /home/user/weekly.sh

# hvert 15. minutt
*/15 * * * * /home/user/status.sh

Etter at du lagrer, plukker cron opp den nye tidsplanen automatisk. Sjekk at cron-tjenesten kjører hvis ingenting skjer:

$ systemctl status cron

For å installere en crontab fra en fil (praktisk når du ruller ut til flere maskiner): skriv linjene til en fil og last den:

$ crontab my_crontab.txt

Fjern crontab-en din helt:

$ crontab -r

En advarsel om stier: cron kjører kommandoer med et minimalt miljø, så backup.sh finner ikke aliasene eller $PATH-oppføringene dine fra ~/.bashrc. Bruk absolutte stier (/usr/bin/... og /home/user/...) i cron-linjer og -skript.

Enkle shell-skript

Et shell-skript er en fil med kommandoer, kjørt fra topp til bunn. Opprett ett med editoren fra kapittel 4:

$ nano hello.sh

Skriv inn disse to linjene, lagre og avslutt (Ctrl+O, Enter, Ctrl+X):

#!/bin/bash
echo "Hello from script"

Første linje (#!/bin/bash) er shebangen — den forteller systemet hvilket skall som skal brukes. Gjør skriptet kjørbart og kjør det:

$ chmod +x hello.sh
$ ./hello.sh
Hello from script

Du kan også kjøre det uten å gjøre det kjørbart:

$ bash hello.sh

Skript kan bruke alt fra denne guiden — pipes, redireksjon, variabler og $1 for det første argumentet:

#!/bin/bash
# backup.sh — kopier en mappe til ~/backups med datostempel
dir="$1"
stamp="$(date +%Y%m%d)"
cp -r "$dir" "$HOME/backups/$dir-$stamp"
echo "Backed up $dir to backups/$dir-$stamp"

$( ) rundt date kjører kommandoen og bruker utdataen der og da — så stamp ender opp med å inneholde den formaterte datoen.

Kjør det med et argument:

$ chmod +x backup.sh
$ ./backup.sh Documents
Backed up Documents to backups/Documents-20260805

Datostempelet kommer fra date-kommandoen. Alene skriver den ut dagens dato og klokkeslett; med +FORMAT skriver den ut hva formatet sier. %Y%m%d utvides til år-måned-dag (for eksempel 20260805), som er et praktisk og sorterbart navn for en sikkerhetskopi.

$ date
Wed Aug  5 10:00:00 UTC 2026
$ date +%Y%m%d
20260805

Kombiner de to idéene: legg skriptet i cron, og du har ubetjent automatisering — den klassiske «ta sikkerhetskopi hver natt kl. 02:00»-oppsettet.

Når et skript vokser ut av de første linjene sine, går guiden Bash — skript som holder mål dypere inn i anførselstegn, tester, løkker og feilhåndtering.