• Hantera processer i Linux från terminalen – En nybörjarguide

    Att förstå och hantera processer är en av de mest grundläggande färdigheterna i Linux. När du kör ett program – vare sig det är en webbläsare, ett terminalkommando eller en systemtjänst – skapas en process. Ibland behöver du som användare ta kontroll över dessa processer: kanske för att ett program har hängt sig, för att frigöra resurser eller för att starta om en tjänst. I Linux görs detta genom att skicka signaler till processer via terminalen. I den här guiden går vi igenom vad processer är, hur signaler fungerar och hur du kan använda viktiga kommandon som kill, killall, pkill, fuser, pgrep och skill för att söka upp, pausa eller avsluta processer – med tydliga exempel för nybörjare.

    Att kunna döda en process från terminalen kan ibland vara nödvändigt.

    Vad är en process i Linux?

    En process är ett körande program på datorn. Operativsystemet Linux hanterar många processer samtidigt och ger varje process ett unikt process-ID (PID) för identifiering. Processer kan vara synliga användarprogram (som ett webbrowserfönster) eller systemtjänster som körs i bakgrunden. Linux-kärnan ansvarar för att schemalägga processer, fördela resurser och hålla isär deras minne och rättigheter. Som användare kan man med kommandon i terminalen inspektera och påverka processer, till exempel om ett program har hängt sig eller om man behöver avsluta en process som förbrukar för mycket resurser.

    Varför behöver man hantera eller avsluta processer?

    Vanliga anledningar till att manuellt hantera (eller döda) processer är att ett program inte svarar, har låst sig eller använder orimligt mycket CPU/minne. Ibland behöver man avsluta ett program som körs i bakgrunden, starta om en tjänst genom att skicka en viss signal, eller frigöra en fil eller nätverksport som en process håller låst. Genom att skicka signaler till processer kan man be dem avsluta på ett kontrollerat sätt eller tvinga fram en avslutning om de inte reagerar. Att känna till de viktigaste kommandona för processhantering – såsom kill, killall, pkill, fuser, pgrep och skill – är därför värdefullt. I denna artikel går vi igenom vad signaler är och hur man använder dessa kommandon med praktiska exempel.

    Signaler i Linux och vanliga signaler

    En signal är ett meddelande som operativsystemet kan skicka till en process för att uppmärksamma den på en händelse eller begära en viss åtgärd. Signaler identifieras både med namn (ofta med prefixet SIG) och ett nummer. Till exempel är SIGTERM signal nummer 15, SIGKILL nummer 9, SIGHUP nummer 1 och SIGSTOP nummer 19. När en signal skickas till en process avbryts den normalt tillfälligt för att hantera signalen. Vissa signaler kan fångas upp av processen (som då kan välja att ignorera dem eller utföra städning), medan andra inte kan ignoreras.

    Några vanliga signaler och deras betydelser är:

    • SIGTERM (15) – Termineringssignal. Standard-signalen som skickas av kommandot kill. Den ber processen att avsluta sig själv gracefully, dvs. på ett kontrollerat sätt[2]. Processen får en chans att städa upp, spara sitt tillstånd, stänga filer etc., innan den avslutas.
    • SIGKILL (9) – Kill-signalen. Detta är en tvångsavslutning som inte kan fångas eller ignoreras av processen[1][3]. Operativsystemet terminerar processen omedelbart när det får denna signal, även om processen hängt sig. SIGKILL bör användas som sista utväg när en process inte reagerar på vänligare signaler, eftersom ingen städning sker och t.ex. temporära filer eller resurser kan lämnas i osäkert tillstånd[3].
    • SIGHUP (1) – Hang up. Ursprungligen indikerar detta att den terminal (TTY) som startade processen kopplades ned. För många bakgrundstjänster (daemons) har det blivit konvention att SIGHUP innebär att processen ska läsa om sin konfiguration eller starta om sig själv[4]. Man kan alltså skicka SIGHUP till en daemon för att få den att göra en mjuk omstart eller ladda om inställningar.
    • SIGSTOP (19) – Stoppsignal. Pauserar en process (fryser dess exekvering) utan att avsluta den, och kan inte ignoreras av processen[1]. Detta motsvarar att köra ett program i bakgrunden genom att trycka Ctrl+Z i terminalen. En stoppad process kan återupptas igen genom att skicka SIGCONT (continue) eller föras in i förgrunden med shell-kommandon som fg. SIGSTOP/SIGCONT är användbara om man tillfälligt vill pausa en process (t.ex. för felsökning) utan att döda den.

    Det finns många fler signaler (för att lista alla standard-signaler kan man köra kill -l eller fuser -l i terminalen). Som nybörjare är det viktigast att förstå att SIGTERM är standardmetoden att avsluta processer på ett snällt sätt, SIGKILL är en tvingande nödlösning, och att signaler som SIGHUP och SIGSTOP har speciella användningsområden. Nästa steg är att använda kommandon som skickar dessa signaler till processer.

    Kommandot kill – avsluta processer med PID

    Det mest grundläggande sättet att skicka en signal till en process är med kommandot kill. Namnet låter brutalt, men kill skickar egentligen en godtycklig signal (som standard SIGTERM) till en eller flera processer utifrån deras PID. För att använda kill måste du alltså känna till processens ID-nummer. Detta kan man ta reda på med verktyg som ps (processlista), top eller pgrep (mer om pgrep nedan).

    Syntax: kill [signal] PID … (om ingen signal anges skickas SIGTERM som standard).

    Exempel på användning:

    # Skicka standardsignalen SIGTERM (15) till process med PID 1234
    kill 1234

    Kommandot ovan ber processen 1234 att avsluta sig själv snällt (SIGTERM är default för kill[2]). Om processen inte avslutas kan man behöva skicka en mer drastisk signal:

    # Tvinga avslutning av process 1234 med SIGKILL (9)
    kill -9 1234

    Här används flaggan -9 för att skicka signal 9 (SIGKILL), vilket omedelbart dödar processen[3]. Notera att man också kan skriva kill -SIGKILL 1234 – många signaler kan anges antingen med nummer, med fullt namn (t.ex. -SIGKILL) eller förkortat utan ”SIG” (t.ex. -KILL), alla dessa är ekvivalenta.

    Ett normalfall är att först försöka med en vanlig kill (SIGTERM) och ge processen åtminstone några sekunder att avsluta sig på rätt sätt. Om den fortsatt vägrar dö eller hänger sig, kan man följa upp med kill -9 för att garantera att den försvinner. SIGKILL kan som sagt inte ignoreras av processen[5].

    Kommandot kill kan även skicka andra signaler. Till exempel kan man skicka SIGHUP (1) för att instruera en process att starta om eller läsa om konfiguration:

    # Skicka SIGHUP (1) till process 5678, ofta för att få en daemon att läsa om sin config
    kill -1 5678 # -1 motsvarar SIGHUP
    kill -HUP 5678 # detta är likvärdigt med -1

    På liknande sätt kan kill -STOP användas för att pausa en process och kill -CONT för att fortsätta en pausad process. Om du är osäker på signalnamnet eller numret kan du skriva:

    # Lista alla signals namn och nummer
    kill -l

    Detta listar alla signaler som systemet känner till (t.ex. får du reda på att 15 = TERM, 9 = KILL, 1 = HUP, etc.).

    Tips: kill är inbyggt i många shell (som Bash). Oftast räcker det att ange PID, men var försiktig så att du inte råkar ange fel PID. Det är alltid en bra idé att dubbelkolla med exempelvis ps eller pgrep att du har rätt process. Som vanlig användare kan du bara skicka signaler till processer du äger (startat själv), medan root-användaren kan signalera alla processer.

    Kommandot killall – döda processer utifrån namn

    Med killall kan du skicka en signal till samtliga processer som matchar ett givet kommando-namn. Till skillnad från kill behöver du alltså inte känna till PID; istället anger du namnet på processen/programmet. Som standard skickar killall också SIGTERM om ingen annan signal anges[6].

    Syntax: killall [flaggor] [signal] namn…

    Ett enkelt exempel:

    # Försöker stänga alla processer som heter ”firefox” med SIGTERM
    killall firefox

    Ovanstående kommando försöker avsluta alla körande Firefox-processer (t.ex. om flera webbläsarfönster är öppna) genom att skicka SIGTERM till dem. Om de inte stänger sig ordentligt kan man tvinga dem:

    # Döda alla ”firefox”-processer med SIGKILL (9)
    killall -9 firefox

    Flaggan -9 fungerar här likadant som för kill. Man kan även specificera signalnamn, till exempel killall -KILL firefox gör samma sak. Under huven skickar killall signalen till alla processer med det angivna namnet[6].

    Det är viktigt att ange processen vid exakt namn. killall matchar som default hela kommandonamnet. Till exempel, killall vi dödar processer vars namn är precis ”vi”, men inte ”vim”. Man kan använda flaggan -I för att ignorera skillnad mellan versaler/gemener vid namnmatchning, eller -r för att tolka namnet som ett regular expression (regex) om man vill ha mer flexibel matchning[7]. Exempelvis skulle killall -r -9 ^firefox med regex döda alla processer vars namn börjar med ”firefox”.

    Några andra praktiska flaggor för killall är: – -i (interactive) – frågar om bekräftelse före varje enskild process som ska dödas. Bra för säkerhets skull om man är osäker. – -v (verbose) – skriver ut information om huruvida signalen lyckades skickas till var och en. – -u användare – begränsa till processer som ägs av en viss användare. T.ex. killall -u alice firefox skulle bara försöka döda Alice instanser av firefox.

    Varning: killall på Linux är harmlöst om du anger ett specifikt processnamn, men se upp så att du inte misstar det för det helt annorlunda kommandot killall på vissa Unix-system (som Solaris) där killall utan argument faktiskt försöker döda alla processer. På Linux är killall en del av psmisc-paketet och fungerar enligt ovan. Ange alltid explicit ett processnamn när du använder detta kommando.

    Kommandot pkill – skicka signal utifrån sökmönster

    pkill liknar killall genom att det låter dig avsluta processer baserat på namn, men det är mer flexibelt. Namnet pkill står för ”process kill” och är kopplat till kommandot pgrep (process grep). I själva verket är pkill en variant av pgrep som istället för att lista processer skickar en signal till dem som matchar kriteriet[8]. pkill använder sig av mönstermatchning (standardmässigt regular expressions) på processernas namn eller andra attribut.

    Syntax: pkill [flaggor] [signal] mönster

    Om ingen signal anges så skickar pkill som vanligt SIGTERM (15)[9]. Mönstret kan vara en del av processens namn. Exempel:

    # Försök avsluta alla processer vars namn innehåller ”chrome”
    pkill chrome

    Ovan kommando skulle skicka SIGTERM till alla processer som matchar regex-mönstret ”chrome” i sitt namn (så det träffar t.ex. både chrome och chromium om de körs). Vill man vara specifik att namnet ska matcha exakt, kan man använda flaggan -x (exact match). Alternativt kan man skriva regex med ^ och $ för att ange början/slut på namnet:

    # Avsluta alla processer som heter exakt ”ssh” (inte bara innehåller ”ssh”)
    pkill -x ssh

    Man kan på liknande sätt som med killall använda -9 eller -KILL för att skicka SIGKILL:

    # Tvinga bort alla processer vars namn matchar ”chrome”
    pkill -9 chrome

    Ett praktiskt användningsområde är att skicka andra signaler. Till exempel för att be en tjänst ladda om sin konfiguration (vilket ofta görs med SIGHUP) kan du göra:

    # Ladda om Nginx konfiguration genom att skicka SIGHUP (1) till alla ”nginx”-processer
    pkill -HUP nginx

    Detta utnyttjar att många tjänster (inklusive Nginx) tolkar SIGHUP som signal att läsa om config[10][11].

    pkill har flera användbara flaggor för att begränsa vilka processer som träffas: – -f – matcha mot hela kommandoraden istället för bara basnamnet. T.ex. pkill -f ”python myscript.py” skulle matcha kommandoraden som innehåller texten python myscript.py (användbart om processen har ett generiskt namn men unika argument). – -u användare – matcha bara processer som körs av en viss användare (eller lista av användare). T.ex. pkill -u bob ssh dödar ssh-processer som körs av användaren bob. – -n / -o – matcha endast den nyaste respektive äldsta processen som uppfyller mönstret. Detta är bra om man t.ex. vill döda den senast startade instansen av något. – -c – (i vissa varianter) visa antal träffade processer istället för att döda (eller används i pgrep specifikt – se man pkill/pgrep).

    En viktig sak med pkill är att det är lätt att matcha bredare än avsett om man inte är försiktig med mönstret. Till exempel kan pkill ssh även döda en process som heter ssh-agent eftersom ”ssh” ingår i namnet. Därför är ett gott råd att först testa mönstret med pgrep (som bara listar träffar) innan man kör pkill. Exempel:

    pgrep -l chrome # listar PIDs och namn för processer som matchar ”chrome”

    Om utdata ser rimlig ut så kan man sedan byta ut pgrep mot pkill med samma mönster för att faktiskt skicka signalen.

    Kommandot pgrep – hitta processer utifrån namn eller villkor

    Som nämnt är pgrep syskonverktyget till pkill. Istället för att skicka signaler listar pgrep helt enkelt ut process-ID för processer vars namn eller andra attribut matchar ett mönster. Formatet liknar pkill:

    Syntax: pgrep [flaggor] mönster

    Standardbeteendet är att matcha processnamn (kommandots namn) mot ett angivet mönster (som tolkas som regex). pgrep skriver ut matchande PIDs, ett per rad. Några exempel:

    # Hitta PID för alla processer vars namn innehåller ”ssh”
    pgrep ssh

    # Hitta PID för processen som heter exakt ”gnome-shell”
    pgrep -x gnome-shell Hantera processer i Linux från terminalen – En nybörjarguide

    Vad är en process i Linux?

    En process är ett körande program på datorn. Operativsystemet Linux hanterar många processer samtidigt och ger varje process ett unikt process-ID (PID) för identifiering. Processer kan vara synliga användarprogram (som ett webbrowserfönster) eller systemtjänster som körs i bakgrunden. Linux-kärnan ansvarar för att schemalägga processer, fördela resurser och hålla isär deras minne och rättigheter. Som användare kan man med kommandon i terminalen inspektera och påverka processer, till exempel om ett program har hängt sig eller om man behöver avsluta en process som förbrukar för mycket resurser.

    Varför behöver man hantera eller avsluta processer?

    Vanliga anledningar till att manuellt hantera (eller döda) processer är att ett program inte svarar, har låst sig eller använder orimligt mycket CPU/minne. Ibland behöver man avsluta ett program som körs i bakgrunden, starta om en tjänst genom att skicka en viss signal, eller frigöra en fil eller nätverksport som en process håller låst. Genom att skicka signaler till processer kan man be dem avsluta på ett kontrollerat sätt eller tvinga fram en avslutning om de inte reagerar. Att känna till de viktigaste kommandona för processhantering – såsom kill, killall, pkill, fuser, pgrep och skill – är därför värdefullt. I denna artikel går vi igenom vad signaler är och hur man använder dessa kommandon med praktiska exempel.

    Signaler i Linux och vanliga signaler

    En signal är ett meddelande som operativsystemet kan skicka till en process för att uppmärksamma den på en händelse eller begära en viss åtgärd. Signaler identifieras både med namn (ofta med prefixet SIG) och ett nummer. Till exempel är SIGTERM signal nummer 15, SIGKILL nummer 9, SIGHUP nummer 1 och SIGSTOP nummer 19[1]. När en signal skickas till en process avbryts den normalt tillfälligt för att hantera signalen. Vissa signaler kan fångas upp av processen (som då kan välja att ignorera dem eller utföra städning), medan andra inte kan ignoreras.

    Några vanliga signaler och deras betydelser är:

    • SIGTERM (15) – Termineringssignal. Standard-signalen som skickas av kommandot kill. Den ber processen att avsluta sig själv gracefully, dvs. på ett kontrollerat sätt[2]. Processen får en chans att städa upp, spara sitt tillstånd, stänga filer etc., innan den avslutas.
    • SIGKILL (9) – Kill-signalen. Detta är en tvångsavslutning som inte kan fångas eller ignoreras av processen[1][3]. Operativsystemet terminerar processen omedelbart när det får denna signal, även om processen hängt sig. SIGKILL bör användas som sista utväg när en process inte reagerar på vänligare signaler, eftersom ingen städning sker och t.ex. temporära filer eller resurser kan lämnas i osäkert tillstånd[3].
    • SIGHUP (1) – Hang up. Ursprungligen indikerar detta att den terminal (TTY) som startade processen kopplades ned. För många bakgrundstjänster (daemons) har det blivit konvention att SIGHUP innebär att processen ska läsa om sin konfiguration eller starta om sig själv[4]. Man kan alltså skicka SIGHUP till en daemon för att få den att göra en mjuk omstart eller ladda om inställningar.
    • SIGSTOP (19) – Stoppsignal. Pauserar en process (fryser dess exekvering) utan att avsluta den, och kan inte ignoreras av processen[1]. Detta motsvarar att köra ett program i bakgrunden genom att trycka Ctrl+Z i terminalen. En stoppad process kan återupptas igen genom att skicka SIGCONT (continue) eller föras in i förgrunden med shell-kommandon som fg. SIGSTOP/SIGCONT är användbara om man tillfälligt vill pausa en process (t.ex. för felsökning) utan att döda den.

    Det finns många fler signaler (för att lista alla standard-signaler kan man köra kill -l eller fuser -l i terminalen). Som nybörjare är det viktigast att förstå att SIGTERM är standardmetoden att avsluta processer på ett snällt sätt, SIGKILL är en tvingande nödlösning, och att signaler som SIGHUP och SIGSTOP har speciella användningsområden. Nästa steg är att använda kommandon som skickar dessa signaler till processer.

    Kommandot kill – avsluta processer med PID

    Det mest grundläggande sättet att skicka en signal till en process är med kommandot kill. Namnet låter brutalt, men kill skickar egentligen en godtycklig signal (som standard SIGTERM) till en eller flera processer utifrån deras PID. För att använda kill måste du alltså känna till processens ID-nummer. Detta kan man ta reda på med verktyg som ps (processlista), top eller pgrep (mer om pgrep nedan).

    Syntax: kill [signal] PID … (om ingen signal anges skickas SIGTERM som standard).

    Exempel på användning:

    # Skicka standardsignalen SIGTERM (15) till process med PID 1234
    kill 1234

    Kommandot ovan ber processen 1234 att avsluta sig själv snällt (SIGTERM är default för kill[2]). Om processen inte avslutas kan man behöva skicka en mer drastisk signal:

    # Tvinga avslutning av process 1234 med SIGKILL (9)
    kill -9 1234

    Här används flaggan -9 för att skicka signal 9 (SIGKILL), vilket omedelbart dödar processen[3]. Notera att man också kan skriva kill -SIGKILL 1234 – många signaler kan anges antingen med nummer, med fullt namn (t.ex. -SIGKILL) eller förkortat utan ”SIG” (t.ex. -KILL), alla dessa är ekvivalenta.

    Ett normalfall är att först försöka med en vanlig kill (SIGTERM) och ge processen åtminstone några sekunder att avsluta sig på rätt sätt. Om den fortsatt vägrar dö eller hänger sig, kan man följa upp med kill -9 för att garantera att den försvinner. SIGKILL kan som sagt inte ignoreras av processen[5].

    Kommandot kill kan även skicka andra signaler. Till exempel kan man skicka SIGHUP (1) för att instruera en process att starta om eller läsa om konfiguration:

    # Skicka SIGHUP (1) till process 5678, ofta för att få en daemon att läsa om sin config
    kill -1 5678 # -1 motsvarar SIGHUP
    kill -HUP 5678 # detta är likvärdigt med -1

    På liknande sätt kan kill -STOP användas för att pausa en process och kill -CONT för att fortsätta en pausad process. Om du är osäker på signalnamnet eller numret kan du skriva:

    # Lista alla signals namn och nummer
    kill -l

    Detta listar alla signaler som systemet känner till (t.ex. får du reda på att 15 = TERM, 9 = KILL, 1 = HUP, etc.).

    Tips: kill är inbyggt i många shell (som Bash). Oftast räcker det att ange PID, men var försiktig så att du inte råkar ange fel PID. Det är alltid en bra idé att dubbelkolla med exempelvis ps eller pgrep att du har rätt process. Som vanlig användare kan du bara skicka signaler till processer du äger (startat själv), medan root-användaren kan signalera alla processer.

    Kommandot killall – döda processer utifrån namn

    Med killall kan du skicka en signal till samtliga processer som matchar ett givet kommando-namn. Till skillnad från kill behöver du alltså inte känna till PID; istället anger du namnet på processen/programmet. Som standard skickar killall också SIGTERM om ingen annan signal anges[6].

    Syntax: killall [flaggor] [signal] namn…

    Ett enkelt exempel:

    # Försöker stänga alla processer som heter ”firefox” med SIGTERM
    killall firefox

    Ovanstående kommando försöker avsluta alla körande Firefox-processer (t.ex. om flera webbläsarfönster är öppna) genom att skicka SIGTERM till dem. Om de inte stänger sig ordentligt kan man tvinga dem:

    # Döda alla ”firefox”-processer med SIGKILL (9)
    killall -9 firefox

    Flaggan -9 fungerar här likadant som för kill. Man kan även specificera signalnamn, till exempel killall -KILL firefox gör samma sak. Under huven skickar killall signalen till alla processer med det angivna namnet[6].

    Det är viktigt att ange processen vid exakt namn. killall matchar som default hela kommandonamnet. Till exempel, killall vi dödar processer vars namn är precis ”vi”, men inte ”vim”. Man kan använda flaggan -I för att ignorera skillnad mellan versaler/gemener vid namnmatchning, eller -r för att tolka namnet som ett regular expression (regex) om man vill ha mer flexibel matchning[7]. Exempelvis skulle killall -r -9 ^firefox med regex döda alla processer vars namn börjar med ”firefox”.

    Några andra praktiska flaggor för killall är: – -i (interactive) – frågar om bekräftelse före varje enskild process som ska dödas. Bra för säkerhets skull om man är osäker. – -v (verbose) – skriver ut information om huruvida signalen lyckades skickas till var och en. – -u användare – begränsa till processer som ägs av en viss användare. T.ex. killall -u alice firefox skulle bara försöka döda Alice instanser av firefox.

    Varning: killall på Linux är harmlöst om du anger ett specifikt processnamn, men se upp så att du inte misstar det för det helt annorlunda kommandot killall på vissa Unix-system (som Solaris) där killall utan argument faktiskt försöker döda alla processer. På Linux är killall en del av psmisc-paketet och fungerar enligt ovan. Ange alltid explicit ett processnamn när du använder detta kommando.

    Svensk manualsida till killall(1)

    Kommandot pkill – skicka signal utifrån sökmönster

    pkill liknar killall genom att det låter dig avsluta processer baserat på namn, men det är mer flexibelt. Namnet pkill står för ”process kill” och är kopplat till kommandot pgrep (process grep). I själva verket är pkill en variant av pgrep som istället för att lista processer skickar en signal till dem som matchar kriteriet[8]. pkill använder sig av mönstermatchning (standardmässigt regular expressions) på processernas namn eller andra attribut.

    Syntax: pkill [flaggor] [signal] mönster

    Om ingen signal anges så skickar pkill som vanligt SIGTERM (15)[9]. Mönstret kan vara en del av processens namn. Exempel:

    # Försök avsluta alla processer vars namn innehåller ”chrome”
    pkill chrome

    Ovan kommando skulle skicka SIGTERM till alla processer som matchar regex-mönstret ”chrome” i sitt namn (så det träffar t.ex. både chrome och chromium om de körs). Vill man vara specifik att namnet ska matcha exakt, kan man använda flaggan -x (exact match). Alternativt kan man skriva regex med ^ och $ för att ange början/slut på namnet:

    # Avsluta alla processer som heter exakt ”ssh” (inte bara innehåller ”ssh”)
    pkill -x ssh

    Man kan på liknande sätt som med killall använda -9 eller -KILL för att skicka SIGKILL:

    # Tvinga bort alla processer vars namn matchar ”chrome”
    pkill -9 chrome

    Ett praktiskt användningsområde är att skicka andra signaler. Till exempel för att be en tjänst ladda om sin konfiguration (vilket ofta görs med SIGHUP) kan du göra:

    # Ladda om Nginx konfiguration genom att skicka SIGHUP (1) till alla ”nginx”-processer
    pkill -HUP nginx

    Detta utnyttjar att många tjänster (inklusive Nginx) tolkar SIGHUP som signal att läsa om config[10][11].

    pkill har flera användbara flaggor för att begränsa vilka processer som träffas: – -f – matcha mot hela kommandoraden istället för bara basnamnet. T.ex. pkill -f ”python myscript.py” skulle matcha kommandoraden som innehåller texten python myscript.py (användbart om processen har ett generiskt namn men unika argument). – -u användare – matcha bara processer som körs av en viss användare (eller lista av användare). T.ex. pkill -u bob ssh dödar ssh-processer som körs av användaren bob. – -n / -o – matcha endast den nyaste respektive äldsta processen som uppfyller mönstret. Detta är bra om man t.ex. vill döda den senast startade instansen av något. – -c – (i vissa varianter) visa antal träffade processer istället för att döda (eller används i pgrep specifikt – se man pkill/pgrep).

    En viktig sak med pkill är att det är lätt att matcha bredare än avsett om man inte är försiktig med mönstret. Till exempel kan pkill ssh även döda en process som heter ssh-agent eftersom ”ssh” ingår i namnet. Därför är ett gott råd att först testa mönstret med pgrep (som bara listar träffar) innan man kör pkill. Exempel:

    pgrep -l chrome # listar PIDs och namn för processer som matchar ”chrome”

    Om utdata ser rimlig ut så kan man sedan byta ut pgrep mot pkill med samma mönster för att faktiskt skicka signalen.

    Svensk manualsida till pkill(1)

    Kommandot pgrep – hitta processer utifrån namn eller villkor

    Som nämnt är pgrep syskonverktyget till pkill. Istället för att skicka signaler listar pgrep helt enkelt ut process-ID för processer vars namn eller andra attribut matchar ett mönster. Formatet liknar pkill:

    Syntax: pgrep [flaggor] mönster

    Standardbeteendet är att matcha processnamn (kommandots namn) mot ett angivet mönster (som tolkas som regex). pgrep skriver ut matchande PIDs, ett per rad. Några exempel:

    # Hitta PID för alla processer vars namn innehåller ”ssh”
    pgrep ssh

    # Hitta PID för processen som heter exakt ”gnome-shell”
    pgrep -x gnome-shell

    # Hitta alla processer som körs av användaren alice och innehåller ”python” i namnet
    pgrep -u alice python

    I det sista exemplet kombineras -u alice för att filtrera på ägare och mönstret ”python” för att filtrera på namn. pgrep har i stort sett samma filterflaggor som pkill (som -f, -x, -n, -o, -u etc.), så man kan göra avancerade sökningar. En användbar flagga är -l (lågt L) som gör att pgrep listar inte bara PID utan även processens namn:

    pgrep -l ssh

    Det kan ge utdata som:

    1039 sshd
    2257 ssh-agent
    6850 ssh
    31279 ssh-agent

    Då ser man både PID och vilket program det är. Om man vill ha hela kommandoraden kan man använda -a i stället för -l.

    pgrep är således mycket smidigare än att köra t.ex. ps aux | grep namn och manuellt leta PIDs. När man väl fått en PID via pgrep kan man sedan använda kill på den, eller direkt använda pkill som vi gjorde ovan för att slippa steget att manuellt läsa av PID.

    Svenska manualsida till pgrep(1)

    Kommandot fuser – hitta (och döda) processer som använder en resurs

    fuser är ett verktyg som skiljer sig lite från de övriga: det är inte en renodlad ”kill”-kommandon utan används för att identifiera vilka processer som använder en viss resurs. En resurs i detta sammanhang kan vara en fil, en mapp, eller en nätverksport/socket. Namnet fuser kommer av ”file user”, dvs vilka processer som använder en fil.

    Ett klassiskt problem är ”varför kan jag inte montera/avmontera den här disken?” eller ”vilken process kör på port 8080?”. fuser hjälper dig att svara på det, och kan även ta steget att döda de processer som blockerar en resurs.

    Syntax: fuser [flaggor] [resurs]

    Några vanliga användningsfall:

    # Ta reda på vilken process som använder filen /var/log/syslog
    fuser /var/log/syslog

    # Lista vilken process som lyssnar på TCP-port 80 (HTTP)
    fuser 80/tcp

    # Visa mer detaljer (ägare, access-typ etc.) för processer som kör på port 80
    fuser -v 80/tcp

    När man kör fuser på en fil eller port returnerar den normalt vilka PID:er som använder resursen. Flaggan -v (verbose) ger en tabell som visar PID, användare, och hur de använder resursen (t.ex. F för öppnad fil, e för exe-körning, tcp för nätverkstjänst etc.)[12][13].

    En mycket praktisk funktion är att kunna döda alla processer som använder en viss resurs. Detta görs med flaggan -k (kill). Exempel:

    # Döda processen som använder TCP-port 8443
    sudo fuser -k 8443/tcp

    Här letar fuser upp vilken process som lyssnar på port 8443 och skickar SIGKILL till den[14]. Som standard skickar fuser -k nämligen SIGKILL till processerna[15]. Om man istället vill försöka avsluta dem mjukare kan man specificera signal, t.ex. fuser -k -TERM 8443/tcp för att skicka SIGTERM (15)[16][17]. Generellt kan man lägga till -[SIGNAL] efter -k för valfri signal.

    VARNING: Använd fuser -k med omsorg. Om du anger en vanlig fil som resurs kommer bara processen som har just den filen öppen att dödas, men om du anger en hel mapp eller en monteringspunkt (t.ex. ett helt filsystem) så kommer alla processer som använder något i den mappen att dödas[18]. Till exempel fuser -k /home kan i värsta fall döda en mängd processer (eftersom många program sannolikt har något öppet under /home). Var därför specifik med resursen och använd gärna -i (interactive) flaggan tillsammans med -k för att be om bekräftelse för varje träff innan den dödas[18]. Exempel:

    # Interaktivt (-i) döda alla processer som använder aktuell mapp (.)
    fuser -ki .

    Ovan skulle lista alla processer som kör något i nuvarande katalog, och fråga y/n innan varje dödas.

    Slutligen, fuser -l visar en lista över alla signalnamn som kommandot känner till, liknande kill -l. fuser är ett kraftfullt verktyg när man till exempel felsöker ”resource busy” felmeddelanden – man kan snabbt hitta vilken process som blockerar en fil eller port och avsluta den för att komma vidare.

    Svensk manualsida till fuser(1)

    Kommandot skill – (föråldrat) skicka signaler baserat på användare/terminal

    Kommandot skill har snarlikt namn som kill, men är ett separat verktyg som låter dig skicka signaler till processer baserat på kriterier som användarnamn, terminal eller kommandonamn. Det kan ses som en föregångare till moderna verktyg som pkill och killall. I dagens Linux-system betraktas skill som föråldrat (obsolete) och ostandardiserat – dokumentationen själv rekommenderar att man använder killall, pkill och pgrep istället[19]. Vi tar ändå upp det här för fullständighetens skull.

    Syntax: skill [signal] [val för urval]

    Till skillnad från killall/pkill som använder argument och flaggor för att matcha processer, så använder skill en mer fri form där man exempelvis kan ange en användare eller en terminal direkt. För att eliminera tvetydighet finns dock flaggor: – -u användare för att matcha alla processer körda av en given användare. – -t tty för att matcha en viss terminal (TTY/PTY) där processerna körs. – -p pid för att matcha ett specifikt process-ID. – -c namn för att matcha ett kommandonamn.

    Standard-signalen för skill är SIGTERM (precis som kill)[20]. Du kan lista tillgängliga signalnamn med skill -l (eller -L för en tabell). Signal anges antingen med t.ex. -SIGKILL eller kortare -KILL eller med nummer -9.

    Några exempel på vad man kan göra med skill:

    # Döda (SIGKILL) alla processer som körs av användaren ”bob”
    sudo skill -KILL -u bob

    Detta liknar att köra killall -u bob eller pkill -9 -u bob – alla Bobs processer avslutas[21]. Ett annat exempel:

    # Stoppa (pausa med SIGSTOP) alla processer som körs på terminal /dev/pts/3
    skill -STOP -t pts/3

    Om en användare har en viss terminal öppen (t.ex. pts/3 över SSH) skulle ovan kommando frysa alla den användarens processer i just den terminalen. Man kan även ange flera kriterier:

    # Exempel från man-sidan: stoppa alla processer för tre olika användare
    skill -STOP -u alice -u bob -u charlie

    Och på motsvarande sätt kan man döda alla processer på alla pseudoterminaler (PTY):

    # Exempel: logga ut alla användare på pts-terminaler med tvång
    sudo skill -KILL -v /dev/pts/*

    Här används -v för verbose så att varje träff rapporteras. Detta kommando skulle skicka SIGKILL till samtliga processer som är kopplade till någon pts-terminal (praktiskt taget logga ut alla interaktiva sessions) – använd med extrem försiktighet!

    Sammanfattningsvis är skill kraftfull men inte så vanligt förekommande längre. Samma sak kan oftast göras med pkill/killall som är mer portabla mellan system. Om du stöter på skill i dokumentation eller scripts vet du nu att det är ett verktyg för att signalera processer med liknande funktion som killall/pkill, men i moderna Linux-distributioner kan du själv välja att använda de senare för klarhetens skull[19].

    Svenska manualsida till skill(1)

    ps – lista och filtrera processer

    ps visar en ögonblicksbild av aktiva processer. Det används för att hitta PID:er och förstå vad som körs.

    Exempel:
    ps – Terminalens egna processer
    ps aux – Alla processer i BSD-format
    ps -ef – Alla processer i System V-format
    ps -eo pid,ppid,user,%cpu,%mem,stat,etime,cmd | head
    ps -C sshd -o pid,ppid,cmd
    ps -ef –forest | less

    Några viktiga kolumner:

    • PID – process-ID
    • PPID – föräldraprocessens ID
    • STAT – status (R=running, S=sleeping, T=stopped, Z=zombie)
    • %CPU / %MEM – resursanvändning

    Svensk manualsida till ps(1)

    pidof – hämta PID utifrån namn

    Ger PID för körande program, bra i skript.

    Exempel:
    pidof nginx
    ps -p ”$(pidof nginx)” -o pid,ppid,%cpu,%mem,cmd

    Svensk manualsida för pidof(1)

    pstree – visa processhierarki

    pstree ritar processer i ett träd.

    Exempel:
    pstree
    pstree -p – med PIDs
    pstree -a – med kommandorader

    Svensk manualsidan till pstree(1)

    lsof – lista öppna filer och portar

    lsof visar vilka filer eller nätverksportar som används av processer.

    Exempel:
    sudo lsof /var/log/syslog
    sudo lsof -P -i :8080
    sudo lsof -t -i :8443 – endast PID
    sudo lsof -p 1234 – öppna filer för specifik PID

    Flaggor:

    • -P → visa portnummer
    • -n → hoppa över DNS
    • -t → endast PID

    Svenskmanualsida för lsof(8)

    top och htop – realtidsövervakning

    Interaktiva verktyg för att se processer i realtid.

    Exempel:
    top
    htop

    Tips i top:

    • M → sortera på minne
    • P → sortera på CPU
    • k → döda en process (ange PID och signal)

    Avslutande tips

    Att hantera processer i Linux-terminalen innebär i stort sett att man skickar rätt signal till rätt process(er). Börja alltid ”snällt” med SIGTERM eller SIGHUP om syftet är att låta processen städa upp och avsluta sig självmant. Om inte det hjälper, eskalera till SIGKILL för att tvinga fram en avslutning. Lär dig känna igen de vanligaste signalnamnen och deras nummer. Använd verktyg som pgrep för att dubbelkolla vilka processer som kommer att påverkas innan du använder pkill eller killall. Och slutligen – var försiktig med kommandon som mass-terminerar processer (killall, fuser -k, eller skill -KILL) särskilt som administratör, så att du inte råkar stänga ner mer än avsett.

    Med dessa verktyg och koncept i bagaget har du en god grund för att felsöka och kontrollera processer i Linux via terminalen. Lycka till med din processhantering!

    Exempel

    Här är 10 praktiska exempel på hur du kan använda ps, pidof, pstree, lsof, top/htop, samt de tidigare genomgångna verktygen (kill, killall, pkill, pgrep, fuser, skill) på olika sätt:

    1. Hitta en process som drar mest CPU
    ps -eo pid,%cpu,%mem,cmd --sort=-%cpu | head
    

    Visar de mest CPU-intensiva processerna.

    1. Avsluta ett specifikt program via PID
    kill -9 4321
    

    Tvingar bort processen med PID 4321 (t.ex. en låst applikation).

    1. Hitta och avsluta alla Firefox-processer
    killall firefox
    

    Avslutar alla processer som heter ”firefox”.

    1. Avsluta processer baserat på mönster i kommandoraden
    pkill -f "python myscript.py"
    

    Stänger processen som kör ett Python-skript med namnet myscript.py.

    1. Lista alla PIDs för processer som heter ssh
    pgrep -l ssh
    

    Visar både PID och namn på alla ssh-relaterade processer.

    1. Hitta vilken process som lyssnar på port 8080
    sudo lsof -i :8080
    

    Visar vilket program som kör på port 8080 (ofta webbserver eller testserver).

    1. Avsluta processen som håller port 8080
    sudo fuser -k 8080/tcp
    

    Dödar processen som blockerar porten.

    1. Visa processhierarkin som träd
    pstree -p
    

    Visar processer och deras PID i ett trädformat – bra för att förstå föräldra-/barnrelationer.

    1. Se vad som händer i realtid
    top
    

    Startar realtidsövervakning av processer. Du kan trycka k för att döda en process direkt från top.

    1. Hitta PID för en tjänst och visa dess detaljer
    pidof nginx
    ps -p $(pidof nginx) -o pid,ppid,user,%cpu,%mem,etime,cmd
    

    Hämtar PID för nginx och visar sedan detaljer om processen.

    Faktaruta: Processkommandon i Linux (terminal)

    Snabböversikt över kill, killall, pkill, pgrep, fuser och skill.

    kill — skicka signal till PID
    Används för att skicka en signal (t.ex. SIGTERM/SIGKILL) till en specifik process via dess PID.
    Syntax
    kill [signal] PID
    kill 1234            # SIGTERM (standard)
    kill -9 1234         # SIGKILL (tvingande)
    kill -HUP 5678       # läs om konfiguration
    killall — skicka signal till alla processer med visst namn
    Riktar in sig på kommandonamn i stället för PID.
    Syntax
    killall firefox       # SIGTERM
    killall -9 firefox    # SIGKILL
    killall -i firefox    # interaktiv bekräftelse
    Vanliga flaggor: -9, -i (interaktiv), -v (verbose), -u <användare>.
    pkill — skicka signal med mönstermatchning
    Använder regex/mönster för att träffa processer efter namn eller kommandorad.
    Syntax
    pkill chrome          # SIGTERM
    pkill -9 chrome       # SIGKILL
    pkill -x ssh          # exakt namnmatch
    pkill -HUP nginx      # ladda om tjänst
    Vanliga flaggor: -f (hela kommandoraden), -u <användare>, -n (nyaste), -o (äldsta), -x (exakt).
    Tips: testa först med pgrep så att mönstret träffar rätt.
    pgrep — hitta processer (ingen signal)
    Listar PIDs (och ev. namn/kommandorad) som matchar ett mönster.
    Syntax
    pgrep ssh
    pgrep -l ssh          # PID + namn
    pgrep -a python       # hela kommandoraden
    pgrep -u alice python # filter per användare
    Flaggor som liknar pkill: -f, -u, -n, -o, -x, -l, -a.
    fuser — visa/döda processer som använder fil/katalog/port
    Identifierar vilka processer som håller en resurs (fil, mountpoint, nätverksport).
    Syntax
    fuser /var/log/syslog
    fuser 80/tcp
    sudo fuser -k 8080/tcp     # döda process(er) på port
    Flaggor: -v (detaljer), -k (döda), -i (interaktiv), -l (lista signaler).
    Obs! -k på en hel katalog/mount kan döda många processer.
    skill — äldre verktyg (använd helst pkill/killall)
    Skickar signaler baserat på användare/terminal/namn; anses föråldrat.
    Exempel
    sudo skill -KILL -u bob   # döda alla processer för användare
    skill -STOP -t pts/3      # pausa processer på terminal
    Vanliga signaler
    • SIGTERM (15) – snäll avslutning (standard).
    • SIGKILL (9) – tvingande avslutning (kan ej fångas/ignoreras).
    • SIGHUP (1) – läs om konfiguration/starta om.
    • SIGSTOP (19) – pausa; återuppta med SIGCONT.
    Lista alla signaler: kill -l
    Rekommenderat arbetssätt
    • Börja med SIGTERM; ta till SIGKILL sist.
    • Testa mönster med pgrep innan du kör pkill.
    • Var försiktig med mass-terminering (killall, fuser -k).
  • Från 70-tal till 2025 – klassiska Linuxkommandon får nya muskler

    När vi startar datorn och skriver ls för att lista filer, eller cp för att kopiera något, tänker de flesta inte på det. Men bakom dessa små kommandon ligger en mjukvaruskatt med rötter tillbaka till 1970-talets Unix. Den heter GNU coreutils, och nu har den fått en ny stor uppdatering – version 9.8.

    En osynlig ryggrad i datorvärlden

    Coreutils är ett paket med de mest grundläggande verktygen i Linux och andra Unixliknande system. Det är program som hjälper oss att läsa textfiler, räkna ord, jämföra innehåll, sortera, hålla reda på datum eller visa hur många processorer datorn har. I princip varje gång du öppnar terminalen är det coreutils som gör jobbet i bakgrunden.

    Och nu – över 40 år efter att de första varianterna såg dagens ljus – fortsätter utvecklingen.

    Nya språk för säkerhet och enkelhet

    I den nya versionen är det särskilt två förbättringar som sticker ut.
    För det första kan verktyget cksum nu använda den moderna SHA3-algoritmen för att skapa säkra kontrollsummor. Kontrollsummor används för att försäkra sig om att en fil är intakt och inte manipulerad, och SHA3 är det senaste inom kryptografisk standardisering.

    För det andra får kodningsverktyget basenc stöd för Base58 – en metod att representera data utan de tecken som ofta misstas för varandra, som nollan och bokstaven O. Perfekt i en tid då vi allt oftare scannar QR-koder och hanterar kryptovalutaadresser.

    Smartare hantering av dagens datorer

    Dagens datorer ser annorlunda ut än på 80-talet, och coreutils hänger med. Kommandot nproc, som visar hur många processorer som finns att tillgå, tar nu hänsyn till cgroup v2 – en teknik som används i moderna Linuxsystem för att begränsa resurser i containrar. Det betyder att program i en container får en mer realistisk bild av vad de faktiskt får använda.

    Även stty, som styr inställningar för terminalen, kan nu sätta godtyckliga överföringshastigheter på vissa system. Och textverktyget fold har blivit medvetet om att världen består av fler tecken än bara ASCII – till exempel emojis och asiatiska tecken – och radbryter dem på rätt sätt.

    Fixar under huven

    Det kanske inte märks direkt för vanliga användare, men version 9.8 rättar också till en lång rad buggar. Till exempel fungerar nu cp --sparse=always bättre när det gäller att spara diskutrymme, tail riskerar inte längre att skriva ut extra rader i vissa situationer, och od (ett program för att visa filer i olika nummerformat) har blivit stabilare.

    För den som arbetar med stora tal har verktyget factor fått en rejäl hastighetsökning, och seq, som används för att generera talföljder, hanterar nu mycket stora startvärden med högre precision.

    Ett internationellt samarbete

    Bakom kulisserna är coreutils ett samarbete mellan utvecklare världen över. Den senaste versionen bygger på 348 kodändringar från åtta olika personer, varav veteranerna Paul Eggert och Padraig Brady står för merparten. Det visar att även de mest grundläggande programmen i datorvärlden behöver ständig omvårdnad – och att arbetet ofta sker i det tysta.

    Fortsatt relevant

    Att ett verktygspaket som skapades i Unix miljö på 1970-talet fortfarande utvecklas aktivt år 2025 är i sig en historia. Det påminner oss om att digital infrastruktur inte alltid handlar om de mest uppmärksammade apparna eller sociala nätverken. Ofta är det små, diskreta verktyg – kommandon på några få bokstäver – som får hela det moderna IT-samhället att fungera.

    För den nyfikne finns den nya versionen att ladda ner på GNU:s hemsida:
    https://gnu.org/s/coreutils/

    https://linuxiac.com/gnu-coreutils-9-8-released-with-sha3-support

  • Installera Google Chrome på Debian 13

    Google Chrome är världens mest använda webbläsare – snabb, kraftfull och med ett stort ekosystem av tillägg.
    För Debian 13-användare kan installationen verka lite krånglig vid första anblick, men lugn – det är enklare än du tror.

    Google Chrome är i dag världens mest använda webbläsare. Trots att Linuxvärlden är full av alternativ som Firefox, Vivaldi och Brave, väljer många användare att hålla fast vid Chrome – av vana, kompatibilitet eller helt enkelt för att det är bekvämt.

    För dig som kör Debian 13 “Trixie” finns det två enkla vägar till en fungerande Chrome-installation. Antingen laddar du ner paketet direkt från Google, eller så kopplar du in Googles eget programförråd och låter systemet sköta uppdateringarna automatiskt.

    Metod 1: Den snabba vägen med DEB-filen

    Det här är den klassiska ”ladda ner och klicka-installera”-lösningen som passar bra för nya Linuxanvändare.

    1. Besök den officiella nedladdningssidan för Chrome.
    2. Välj 64-bitars .deb och spara filen.
    3. Öppna en terminal och navigera till din nedladdningsmapp:
       cd ~/Hämtningar
    1. Installera paketet med:
       sudo dpkg -i google-chrome-stable_current_amd64.deb
    1. Om systemet klagar på saknade beroenden, kör:
       sudo apt -f install

    Nu finns Chrome i programmenyn. Du kan även starta det direkt från terminalen:

    google-chrome

    Metod 2: Den långsiktiga lösningen med Googles förråd

    För den som vill ha det lite mer robust – och slippa tänka på manuella uppdateringar – är Googles officiella förråd rätt väg att gå. När det väl är på plats får Chrome nya versioner tillsammans med systemets vanliga säkerhetsuppdateringar.

    1. Hämta och installera Googles nyckel:
       wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg
    1. Lägg till förrådet i APT:s källista:
       echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
    1. Uppdatera paketlistan och installera Chrome:
       sudo apt update
       sudo apt install google-chrome-stable

    Oavsett vilken metod du väljer har du en fullt fungerande Chrome-installation på Debian 13 på bara några minuter.

    Faktaruta

    Google Chrome – kort historik och varför den är så populär

    Historia (kort)

    • 2008: Förhandsversion för Windows med den snabba V8-motorn och sandlåda per flik.
    • 2009–2010: Versioner för macOS och Linux rullas ut.
    • 2012: Chrome till Android.
    • 2013: Google forkar WebKit till Blink inom det öppna Chromium-projektet.
    • Idag: Frekventa, inkrementella uppdateringar och brett plattformsstöd.

    Varför så populär?

    • Hastighet: V8 (JIT), effektiv flik-/processmodell och smart förladdning.
    • Säkerhet: Sandlådor, Site Isolation, Safe Browsing och täta uppdateringar.
    • Kompatibilitet: Stort stöd för moderna webbstandarder – många sajter testas primärt mot Chrome.
    • Tillägg & dev-verktyg: Stort ekosystem i Chrome Web Store och kraftfulla DevTools.
    • Synk mellan enheter: Bokmärken, lösenord och historik via Google-konto.
    • Enkelt gränssnitt: Fokuserar på innehållet, minimalt lull-lull.

    Tips: På Linux får du smidigaste uppdateringarna genom att lägga till Googles officiella förråd och installera via apt.

  • Updo – Håll koll på din webbplats direkt från terminalen

    Updo är ett lättviktigt kommandoradsverktyg som övervakar upptid och prestanda på dina webbplatser i realtid – utan dyra abonnemang eller tunga dashboards. Installera på några minuter, mät svarstider och SSL, testa från flera regioner och få larm direkt i Slack eller via webhooks. Perfekt för allt från personliga bloggar till produktions-API:er.

    Att hålla koll på om ens sajter är uppe är lite som att spana efter ubåtar – plötsligt kan ryssen dyka upp på överraskningsbesök, antingen som U137 eller som ett intrång på din hemsida.

    Håll koll på upptid och prestanda utan krångel

    En webbplats som är långsam eller otillgänglig kan snabbt leda till tappat förtroende, färre besökare och till och med förlorade intäkter. Därför är det viktigt att hålla ett öga på både upptid och prestanda.

    Updo är ett öppen källkod-verktyg som låter dig övervaka upptid och prestanda direkt från kommandoraden. Det är enkelt, snabbt och helt gratis. Till skillnad från många andra lösningar behöver du inte betala för ett konto eller logga in i krångliga dashboards – allt sköts lokalt på din dator.

    Vad är Updo?

    Updo är ett lättviktigt CLI-verktyg som ger dig en tydlig bild av hur din webbplats mår. Med det kan du:

    • Mäta upptid och svarstider
    • Se eventuella felkoder
    • Få varning innan SSL-certifikat löper ut
    • Testa prestanda från olika platser i världen
    • Få notifieringar via Slack, Discord eller egna webhooks

    För mer avancerad analys kan Updo dessutom integreras med Prometheus och Grafana, så att du kan följa trender och sätta upp snygga dashboards.

    Updo är byggt i Go och fungerar på Linux, macOS och Windows.

    Varför använda Updo?

    Det finns gott om verktyg och tjänster för upptidsövervakning, men många är antingen dyra, krångliga eller beroende av tredjepartsservrar. Updo är annorlunda:

    • Gratis och öppen källkod – inga abonnemang eller låsningar
    • Körs lokalt – full kontroll utan beroenden
    • Utvecklarvänligt – byggt för att fungera i skript, CI/CD-pipelines eller automatiska övervakningssystem

    Kort sagt: det är ett flexibelt alternativ för dig som vill ha enkel övervakning utan onödigt krångel.

    Viktiga funktioner

    • Realtid: Du ser direkt om sidan går ner, blir långsam eller har problem med SSL-certifikatet.
    • Flera mål: Övervaka många webbplatser samtidigt, med stöd för konfigurationsfiler.
    • Global täckning: Testa prestanda från 13 olika AWS-regioner.
    • Aviseringar: Få notiser via Slack, Discord, egna system eller direkt på skrivbordet.
    • Flexibla inställningar: Hantera headers, POST/PUT-förfrågningar, SSL och redirects utan problem.

    Så installerar du Updo

    Snabbinstallation (Linux/macOS)
    curl -sSL https://raw.githubusercontent.com/Owloops/updo/main/install.sh | bash
    Debian/Ubuntu
    curl -LO https://github.com/Owloops/updo/releases/download/v0.4.2/updo_0.4.2_linux_amd64.deb
    sudo dpkg -i updo_0.4.2_linux_amd64.deb

    Kom igång på några sekunder

    Att använda Updo är enkelt. Vill du övervaka en enskild webbplats skriver du:

    updo monitor https://linux.se

    För att kontrollera flera webbplatser samtidigt:

    updo monitor https://ostechnix.com https://google.com

    Du kan justera uppdateringsintervall och timeout:

    updo monitor --refresh 10 --timeout 5 https://google.com

    Och om du vill logga resultatet till en fil:

    updo monitor --log https://example.com > output.json

    Praktiska exempel

    • Blogg eller hemsida: Håll koll var 30\:e sekund.
      updo monitor --refresh 30 https://dinblogg.se
    • API health-checks: Kontrollera att rätt text finns i svaret.
      updo monitor --assert-text "healthy" https://api.dintjänst.se/health
    • SSL-bevakning: Varning innan certifikatet går ut.
      updo monitor --simple https://secure.dinbutik.se
    • Tester från flera regioner: Jämför prestanda i olika delar av världen.
      updo monitor --regions us-east-1,eu-west-1 https://dinsajt.se
    • Aviseringar i Slack: Få ett meddelande direkt när sidan går ner.
      updo monitor --webhook-url "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ" https://dinblogg.se

    Integrationer och långsiktig analys

    Updo kan enkelt kopplas till Slack, Discord eller egna webhooks för att ge aviseringar i realtid. Notiserna innehåller detaljer om felet, svarstiden och vilken webbplats det gäller.

    För långsiktig övervakning går det att exportera data till Prometheus och Grafana. Då kan du följa upptid över månader, jämföra globala svarstider och sätta upp egna larm.

    En färdig Docker-exempelmiljö finns på projektets GitHub.

    Slutsats

    Updo är ett snabbt, smidigt och kraftfullt verktyg för dig som vill ha koll på dina webbplatser – utan dyra abonnemang eller komplexa plattformar.

    • Enkelt att installera
    • Lätt att använda
    • Tillräckligt flexibelt för avancerade behov

    Vill du ha kontroll, transparens och trygghet – direkt i terminalen – är Updo ett verktyg som definitivt är värt att testa.

    👉 Kolla in projektet på GitHub

    Faktaruta: Updo

    Typ
    CLI-verktyg för upptids- och prestandaövervakning
    Plattformar
    Linux, macOS, Windows
    Källkod
    Öppen källkod, skrivet i Go
    Integrationer
    Slack, Discord, webhooks, Prometheus, Grafana
    Huvudfunktioner
    • Upp-/nedstatus och upptidsprocent
    • Svarstider och felkoder
    • SSL-certifikatets utgångsdatum
    • Mätningar från flera regioner
    • Larm via Slack/Discord/webhooks
    Snabbstart
    $ updo monitor https://dinsajt.se

    Källa : https://ostechnix.com/updo-website-uptime-monitoring-cli-tool/

  • Grml 2025.08 släppt – firar Debians 32-årsdag

    Grml 2025.08 släppt – firar Debians 32-årsdag

    Den populära systemadministratörsdistributionen Grml är nu ute i en ny version, 2025.08, och släpps lagom till att Debian fyller 32 år.

    Bygger på Debian 13 och Linux 6.12 LTS
    Den nya versionen bygger på Debian 13 ”Trixie” och körs med den långtidssupportade Linux 6.12 LTS-kärnan, vilket innebär både modernare hårdvarustöd och nyare programvara än tidigare. Dessutom har man rättat till flera kända buggar från föregående utgåvor.

    Förbättrad språkhantering och enklare utveckling
    Bland nyheterna märks en ny signeringsnyckel för Grml:s egna programförråd, förbättrad språkhantering både vid uppstart och i verktyget grml-lang, samt att flera tidigare fristående paket nu slagits ihop för att förenkla utvecklingen.

    Nytt i byggsystemet grml-live
    Även grml-live, systemet som används för att bygga Grml-avbilder, har fått en rejäl uppdatering. Det stöder nu bland annat byggande av testversioner baserade på ”Debian Forky”, tangentbordsstöd för fler språk, nya funktioner för att hoppa över paket, samt stöd för så kallade reproducerbara ISO-filer – något som ökar transparensen och säkerheten.

    https://grml.org/download

  • Bygg din egen diskförstörare med webbgränssnitt – praktisk tillämpning och utvärdering

    Tux och en svensk tiger raderar hårddiskar, så att inte lede fi kan se innehållet.

    Tidigare denna månad presenterade vi ett inlägg om hur man återbrukar en uttjänt dator och förvandlar den till en dedikerad diskförstörare med webbgränssnitt. Artikeln beskrev en lösning där en gammal maskin utrustas med ett skriptbaserat webbgränssnitt för att hantera radering av hårddiskar lokalt och fjärrstyrt. För mer information om hur systemet byggs upp – se den ursprungliga artikeln.

    Bakgrund och syfte

    Under många år har jag samlat på mig ett stort antal hårddiskar, främst mekaniska (HDD), både egna och från andra. Av integritetsskäl har jag aldrig vågat lämna dem till återvinning utan att först säkerställa att datainnehållet är oåterkalleligt raderat. Många av diskarna innehåller potentiellt känslig information, och eftersom jag åtagit mig ansvaret att hantera även andras lagringsmedia professionellt, är datadestruktion med hög säkerhet ett absolut krav.

    Erfarenheter från drift

    Under de senaste veckorna har jag använt det webbaserade diskförstörare-systemet i praktiken. Det har fungerat stabilt och är användarvänligt, med tydlig återkoppling via gränssnittet. En stor fördel är att raderingsförloppet kan övervakas i realtid via webbläsaren, vilket gör det enklare att logga förlopp, bekräfta färdigställd radering och felsöka vid behov.

    Identifierade begränsningar

    Den nuvarande implementationen i webbappen har dock en begränsning: den hanterar endast en hårddisk åt gången. I situationer där man vill sanera flera diskar parallellt – t.ex. i en batchprocess – är detta en flaskhals. Om man istället kör raderingen via terminal (SSH) och använder shred direkt mot flera enheter i bakgrunden (t.ex. via screen eller tmux), kan man utnyttja maskinens resurser bättre och köra flera shred-processer samtidigt.

    Exempel på parallell radering via SSH:

    sudo shred -vzn 3 /dev/sdX &
    sudo shred -vzn 3 /dev/sdY &
    sudo shred -vzn 3 /dev/sdZ &
    
    Svensk manaulsida till shred

    Här raderas tre diskar parallellt med 3 överskrivningar och nollfyllning på slutet.

    Slutsats och nästa steg

    Trots begränsningen med sekventiell radering fungerar webbappen som ett robust och lättanvänt gränssnitt för manuell diskhantering. I nästa iteration planeras stöd för köhantering av flera diskar och eventuell integration med udev-regler för automatisk identifiering av nya enheter. Även loggning och export av raderingsrapporter i text- eller JSON-format övervägs.

    Lede fi bli ledsen i ögat när en Svensk tiger.

Etikett: Terminal

  • Hantera processer i Linux från terminalen – En nybörjarguide

    Att förstå och hantera processer är en av de mest grundläggande färdigheterna i Linux. När du kör ett program – vare sig det är en webbläsare, ett terminalkommando eller en systemtjänst – skapas en process. Ibland behöver du som användare ta kontroll över dessa processer: kanske för att ett program har hängt sig, för att…

  • Från 70-tal till 2025 – klassiska Linuxkommandon får nya muskler

    När vi startar datorn och skriver ls för att lista filer, eller cp för att kopiera något, tänker de flesta inte på det. Men bakom dessa små kommandon ligger en mjukvaruskatt med rötter tillbaka till 1970-talets Unix. Den heter GNU coreutils, och nu har den fått en ny stor uppdatering – version 9.8. En osynlig…

  • Installera Google Chrome på Debian 13

    Google Chrome är världens mest använda webbläsare – snabb, kraftfull och med ett stort ekosystem av tillägg.För Debian 13-användare kan installationen verka lite krånglig vid första anblick, men lugn – det är enklare än du tror. Google Chrome är i dag världens mest använda webbläsare. Trots att Linuxvärlden är full av alternativ som Firefox, Vivaldi…

  • Updo – Håll koll på din webbplats direkt från terminalen

    Updo är ett lättviktigt kommandoradsverktyg som övervakar upptid och prestanda på dina webbplatser i realtid – utan dyra abonnemang eller tunga dashboards. Installera på några minuter, mät svarstider och SSL, testa från flera regioner och få larm direkt i Slack eller via webhooks. Perfekt för allt från personliga bloggar till produktions-API:er. Håll koll på upptid…

  • Grml 2025.08 släppt – firar Debians 32-årsdag

    Grml 2025.08 släppt – firar Debians 32-årsdag Den populära systemadministratörsdistributionen Grml är nu ute i en ny version, 2025.08, och släpps lagom till att Debian fyller 32 år. Bygger på Debian 13 och Linux 6.12 LTSDen nya versionen bygger på Debian 13 ”Trixie” och körs med den långtidssupportade Linux 6.12 LTS-kärnan, vilket innebär både modernare…

  • Bygg din egen diskförstörare med webbgränssnitt – praktisk tillämpning och utvärdering

    Tidigare denna månad presenterade vi ett inlägg om hur man återbrukar en uttjänt dator och förvandlar den till en dedikerad diskförstörare med webbgränssnitt. Artikeln beskrev en lösning där en gammal maskin utrustas med ett skriptbaserat webbgränssnitt för att hantera radering av hårddiskar lokalt och fjärrstyrt. För mer information om hur systemet byggs upp – se…