Introduktion
Når du arbejder i Linux-terminalen, kan det være en stor fordel at kunne køre kommandoer som en baggrundsproces. Det giver dig mulighed for at fortsætte med andre opgaver, mens en proces kører uforstyrret, hvilket især er nyttigt ved langvarige scripts, downloads eller systemvedligeholdelse.
I denne artikel ser vi nærmere på, hvordan du kan køre kommandoer som en professionel ved hjælp af forskellige teknikker og værktøjer. Du lærer blandt andet at bruge baggrundsjob med &
, holde processer kørende med nohup
, frakoble dem med disown
, samt hvordan du planlægger opgaver med både cron
og at
.
Baggrundsprocesser i Linux
Hvad er en baggrundsproces?
I Linux skelnes der mellem forgrunds- og baggrundsprocesser. En forgrundsproces er aktivt knyttet til terminalen og blokerer for, at du kan skrive andre kommandoer, før den er færdig. En baggrundsproces derimod kører parallelt og tillader dig at fortsætte arbejdet i terminalen.
At køre noget i baggrunden er særligt nyttigt, når du arbejder med opgaver, der tager lang tid, som f.eks. sikkerhedskopiering, kompilering eller netværkstest. Det øger din effektivitet og giver mere fleksibilitet i din arbejdsgang.
Brug af &
til at starte en proces i baggrunden
Ved at tilføje et &
efter en kommando kan du starte den i baggrunden:
ping google.com &
Når du gør dette, vil terminalen returnere et jobnummer i firkantede parenteser og et proces-ID (PID). Eksempel:
[1] 12345
Her er 1
jobnummeret og 12345
PID’en for processen.
Jobs og kontrol med fg
, bg
og jobs
Du kan til enhver tid få et overblik over aktive job med kommandoen:
jobs
Hvis du ønsker at bringe et baggrundsjob tilbage til forgrunden, kan du bruge:
fg %1
Her refererer %1
til jobnummeret. Hvis du vil sætte et job i baggrunden igen efter at have stoppet det midlertidigt med Ctrl+Z
, bruger du:
bg %1
Med disse enkle kommandoer får du fuld kontrol over dine processer i terminalen.
Brug af nohup
til langvarige processer
Hvad gør nohup
?
Normalt vil en proces blive afsluttet, hvis du lukker terminalen eller mister forbindelsen via SSH. nohup
(forkortelse for no hangup) forhindrer dette ved at ignorere det signal, der normalt afslutter processer ved afbrydelse af terminalen. Det betyder, at processen fortsætter med at køre i baggrunden, selv efter du har logget ud.
Eksempel på brug
For at bruge nohup
sammen med en kommando, skal du blot skrive:
nohup script.sh &
Denne kommando starter script.sh
i baggrunden og sikrer, at den fortsætter med at køre uanset hvad der sker med terminalen.
Som standard bliver al output fra kommandoen gemt i en fil ved navn nohup.out
i den aktuelle mappe. Ønsker du at omdirigere output til en specifik fil, kan du gøre det sådan:
nohup script.sh > output.log 2>&1 &
Her bliver både standard output og fejloutput gemt i output.log
.
disown
– Når du vil slippe forbindelsen til terminalen
Hvad gør disown
?
disown
bruges til at fjerne en baggrundsproces fra terminalens jobliste. Det betyder, at processen ikke længere er knyttet til din shell-session og dermed ikke afsluttes, hvis du lukker terminalen. Hvor nohup
bruges ved opstart af processen, anvendes disown
typisk efterfølgende på et allerede kørende job.
Eksempel på brug
Først starter du processen i baggrunden:
some_command &
Herefter bruger du disown
til at frakoble den:
disown
Hvis du har flere job i gang, og kun ønsker at disown’e et specifikt job, kan du bruge jobnummeret:
disown %1
Kombinationen af &
og disown
er nyttig, når du har startet noget spontant og senere beslutter, at det skal køre videre uden terminalforbindelse.
Planlagte opgaver med cron
Hvad er cron
?
cron
er et systemværktøj i Linux, der bruges til at køre kommandoer eller scripts automatisk på faste tidspunkter. Det er ideelt til rutineopgaver som sikkerhedskopiering, opdateringer eller vedligeholdelse.
Redigering af crontab
For at planlægge en opgave med cron
, skal du redigere din personlige crontab med:
crontab -e
Hver linje i crontab repræsenterer én opgave og følger dette format:
minut time dag_i_måneden måned dag_i_ugen kommando
Eksempel: Daglig backup kl. 03:00
0 3 * * * /home/user/backup.sh
Denne linje sørger for, at scriptet backup.sh
køres hver dag klokken 03:00.
Logning og fejlsøgning
Som standard sender cron
output og fejlmeddelelser som e-mails til brugeren. Hvis mailsystemet ikke er konfigureret, kan du omdirigere output til en fil:
/home/user/backup.sh >> /home/user/backup.log 2>&1
>>
tilføjer output til logfilen, og 2>&1
sørger for, at både standard output og fejlmeddelelser bliver gemt samme sted. Dette gør det nemmere at følge med i, om dine automatiske opgaver kører som forventet.
Engangsplanlægning med at
Hvad er at
-kommandoen?
at
er et værktøj i Linux, der giver dig mulighed for at planlægge en kommando eller et script til at blive kørt én gang på et specifikt tidspunkt. Det er nyttigt til engangsopgaver, som f.eks. at slukke systemet senere på dagen eller køre en opgave uden gentagelse.
Eksempler på brug
For at planlægge en kommando kl. 23:00 kan du skrive:
echo "shutdown now" | at 23:00
Du kan også angive dato og tid mere præcist, f.eks.:
echo "/home/user/script.sh" | at 14:30 Jun 10
Vis og slet planlagte at
-jobs
For at se en liste over dine kommende at
-jobs, brug:
atq
Hvis du vil slette et bestemt job, skal du bruge jobnummeret fra atq
og skrive:
atrm 3
Her slettes job nummer 3. På den måde har du fuld kontrol over dine enkeltstående planlagte opgaver.
Sammenligning af baggrundsproces metoder
Funktion | & | nohup | disown | cron | at |
---|---|---|---|---|---|
Starter i baggrunden | ✅ | ✅ | ➖ | ➖ | ➖ |
Overlever lukning af terminal | ❌ | ✅ | ✅ | ✅ | ✅ |
Planlægning på fast tidspunkt | ❌ | ❌ | ❌ | ✅ | ✅ |
Engangsplanlægning | ❌ | ❌ | ❌ | ❌ | ✅ |
Denne tabel giver et hurtigt overblik over, hvilke metoder der egner sig bedst til forskellige scenarier, alt efter om du ønsker at køre noget i baggrunden, sikre fortsat kørsel efter logout, eller planlægge opgaver frem i tiden.
Afslutning
At kunne styre, hvordan og hvornår kommandoer kører i Linux, er en vigtig færdighed for både begyndere og øvede brugere. Her er en kort opsummering af de vigtigste værktøjer:
&
– Start en kommando i baggrunden.nohup
– Hold processen kørende efter terminalen lukkes.disown
– Frakobl en baggrundsproces fra terminalen.cron
– Kør scripts på faste tidspunkter.at
– Planlæg en opgave til at køre én gang i fremtiden.
Hvornår bruger man hvad?
- Brug
&
og evt.disown
til hurtige, spontane baggrundsopgaver. - Brug
nohup
når du forventer, at terminalen kan blive lukket. - Brug
cron
til tilbagevendende opgaver som backup eller systemvedligeholdelse. - Brug
at
når du vil køre noget én gang på et bestemt tidspunkt.
Afslutningsvis: eksperimentér gerne med disse kommandoer i et sikkert miljø, f.eks. en virtuel maskine eller testserver. Det er den bedste måde at lære på – og det gør dig mere tryg ved at bruge Linux effektivt i praksis.