KILL(1)

NAMN
kill - avsluta en process

SYNOPSIS

kill [-signal|-s signal|-p] [-q value] [-a] [--timeout milliseconds signal] [--] pid|pid:_pidfd_inode_|name...

kill [-signal|-s signal] pid|pid:_pidfd_inode_...

kill -l [nummer|0xsigmask] | -L

kill -d pid

BESKRIVNING

Kommandot kill skickar den angivna signalen till de angivna processerna eller processgrupperna.

Om ingen signal anges skickas signalen TERM. Standardåtgärden för denna signal är att avsluta processen. Denna signal bör användas i stället för KILL-signalen (nummer 9), eftersom en process kan installera en hanterare för TERM-signalen för att utföra rensningssteg innan den avslutas på ett ordnat sätt. Om en process inte avslutas efter att en TERM-signal har skickats, kan KILL-signalen användas; tänk på att den senare signalen inte kan fångas och därför inte ger målprocessen möjlighet att utföra någon upprensning innan den avslutas.

De flesta moderna skal har ett inbyggt kill-kommando, med en användning som är ganska lik den för det kommando som beskrivs här. Flaggorna --all, --pid och --queue, samt möjligheten att ange processer med kommandonamn, är lokala tillägg.

Om signal är 0 skickas ingen faktisk signal, men felkontroll utförs ändå.

ARGUMENT

Listan över processer som ska signaleras kan bestå av en blandning av namn och PID:er.

pid
    Varje pid kan uttryckas på ett av följande sätt:

    n
        där n är större än 0. Processen med PID n signaleras.

    0
        Alla processer i den aktuella processgruppen signaleras.

    -1
        Alla processer med en PID som är större än 1 signaleras.

    -n
        där n är större än 1. Alla processer i processgrupp n signaleras. När ett argument av formen '-n' anges och det är avsett att beteckna en processgrupp, måste antingen en signal anges först eller argumentet föregås av en '--'-flagga, annars kommer det att betraktas som den signal som ska skickas.

pid:_pidfd_inode_
    A process can be referenced by its pid plus pidfd_inode (pid:pidfd_inode), to uniquely identify it and perform race-free signalling. This works only for the options -s, --signal and -signal. Requires kernel version 6.9 and later.

namn
    Alla processer som anropas med detta namn kommer att signaleras.

FLAGGOR

-s, --signal signal
    Den signal som ska skickas. Den kan ges i form av ett namn eller ett nummer.

-l, --list [nummer|0xsigmask]
    Skriv ut en lista med signalnamn, konvertera det angivna signalnumret till ett namn eller konvertera den angivna signalmasken till namn. Signalerna finns i /usr/include/linux/signal.h.

        $ ps s $$
          UID PID VÄNTANDE BLOCKERAD IGNORERAD FÅNGAD STAT TTY TID KOMMANDO
         1000 1608069 0000000000000000 0000000000000002 0000000000384000 0000000008013003 Ss pts/44 0:02 zsh
        $ kill -l 0x0000000000384000
        TERM
        TSTP
        TTIN
        TTOU

    If neither NUMBER nor 0xSIGMASK is given, list all signal names. In that case, print one signal per line when the output is not a terminal.

-L, --table
    Similar to -l, but it will print signal names and their corresponding numbers. Print one signal per line when the output is not a terminal.

-a, --all
    Begränsa inte konverteringen av kommandonamn till PID till processer med samma UID som den aktuella processen.

-p, --pid
    Skriv bara ut process-ID (PID) för de namngivna processerna, skicka inga signaler.

-r, --require-handler
    Skicka inte signalen om den inte fångas upp i userspace av den signalerade processen.

--verbose
    Skriv ut PID(s) som kommer att signaleras med kill tillsammans med signalen.

-q, --queue värde
    Skicka signalen med sigqueue(3) i stället för kill(2). Argumentet värde är ett heltal som skickas tillsammans med signalen. Om den mottagande processen har installerat en hanterare för den här signalen med flaggan SA_SIGINFO i sigaction(2), kan den hämta dessa data via fältet si_sigval i strukturen siginfo_t.

--timeout milliseconds signal
    Skicka en signal definierad på vanligt sätt till en process, följt av en ytterligare signal efter en angiven fördröjning. Flaggan --timeout gör att kill väntar en period definierad i millisekunder innan en uppföljande signal skickas till processen. Den här funktionen implementeras med hjälp av Linux-kärnans PID-filbeskrivarfunktion för att garantera att uppföljningssignalen skickas till samma process eller inte skickas om processen inte längre existerar.

    Observera att operativsystemet kan återanvända PID:er och att implementera en motsvarande funktion i ett skal med kill och sleep skulle kunna leda till att uppföljningssignalen skickas till en annan process som använder en återanvänd PID.

    Flaggan --timeout kan anges flera gånger: signalerna skickas sekventiellt med de angivna tidsfristerna. Flaggan --timeout kan kombineras med flaggan --queue.

    Följande kommando skickar t.ex. signalerna QUIT, TERM och KILL i sekvens och väntar 1000 millisekunder mellan varje signal:

        kill --verbose --timeout 1000 TERM --timeout 1000 KILL \
                --signal QUIT 12345

-d, --show-process-state pid
    Avkoda signalrelaterade fält i /proc/pid/status.

        $ kill -d $$
        Blockerad: INT
        Ignoreras: TERM TSTP TTIN TTOU
        Fångas upp: HUP INT RÖR ALRM CHLD VINSCH

-h, --help
    Visa hjälptext och avsluta.

-V, --version
    Visa version och avsluta.

AVSLUTSSTATUS

kill har följande värden för utgångsstatus:

0
    lyckades

1
    misslyckande

64
    delvis framgång (när mer än en process anges)

ANTECKNINGAR

Även om det är möjligt att ange TID (tråd-ID, se gettid(2)) för en av trådarna i en flertrådad process som argument för kill, riktas signalen ändå till processen (dvs. hela trådgruppen). Det går med andra ord inte att skicka en signal till en explicit vald tråd i en flertrådad process. Signalen kommer att levereras till en godtyckligt vald tråd i målprocessen som inte blockerar signalen. För mer information, se signal(7) och beskrivningen av CLONE_THREAD i clone(2).

Olika skal har ett inbyggt kill-kommando som är att föredra framför kill(1) som beskrivs i den här handboken. Det enklaste sättet att säkerställa att man kör det kommando som beskrivs på den här sidan är att använda hela sökvägen när man anropar kommandot, t.ex: /bin/kill --version

UPPHOVSPERSONER

Originalversionen är hämtad från BSD 4.4.

SE ÄVEN

bash(1), tcsh(1), sigaction(2), kill(2), sigqueue(3), signal(7) proc(5) proc_pid_status(5)

FELRAPPORTERING

För felrapporter, använd

TILLGÄNGLIGHET

Kommandot kill ingår i paketet util-linux som kan hämtas från