KILL(P)

NOME
kill - termina o invia un segnale ad un processo

SINTASSI

kill -s nome_segnale pid ...

kill -l [statouscita]

kill [-nome_segnale] pid ...

kill [-numero_segnale] pid ...

DESCRIZIONE

L'utilità kill manda un segnale al processo o ai processi specificati da ogni operando pid.

Per ogni operando pid, l'utilità kill deve compiere azioni equivalenti alle funzioni di kill() definite nel volume System Interfaces di IEEE Std 1003.1-2001, chiamata con i seguenti argomenti:

*   Il valore dell'operando pid deve essere usato come argomento di pid

*   L'argomento sig è il valore specificato dall'opzione -s, dall'opzione - numero_segnale, o dall'opzione - nome_segnale, o da SIGTERM, se nessuna di queste opzioni è specificata.

OPZIONI

L'utilità kill deve essere conforme al volume Base Definitions di IEEE Std 1003.1-2001, Sezione 12.2, Utility Syntax Guidelines, tranne che nelle ultime due forme di SINTASSI per le quali le opzioni - numero_segnale e - nome_segnale solitamente sono più di un unico carattere.

Devono essere supportate le seguenti opzioni:

-l  (La lettera elle) Se non è fornito nessun operando scrive tutti i valori di nome_segnale supportati dall'applicazione. Se è fornito un operando stato_uscita, ed è un valore del parametro speciale di shell '?' (vedere Special Parameters e wait()) corrispondente ad un processo terminato da un segnale, scrive il nome_segnale corrispondente al segnale che ha terminato il processo. Se è fornito un operando stato_uscita, ed è il valore intero decimale senza segno di un numero di segnale, scrive il nome_segnale (il nome simbolico costante senza il prefisso SIG definito nel volume Base Definitions di IEEEStd 1003.1-2001) corrispondente a quel segnale. Altrimenti i risultati saranno indefiniti.

-s  nome_segnale

    Specifica il segnale da inviare, usando uno dei nomi simbolici definiti nell'header <signal.h>. I valori di nome_segnale devono essere riconosciuti senza distinzione tra maiuscolo e minuscolo, senza il prefisso SIG. In più, deve essere riconosciuto il nome simbolico 0, che rappresenta il valore del segnale zero. Il segnale corrispondente deve essere inviato al posto di SIGTERM.

-nome_segnale

    Equivalente di -s nome_segnale.

-numero_segnale

    Specifica un intero decimale non negativo, numero_segnale, che rappresenta il segnale da usare al posto di SIGTERM, come argomento sig nella chiamata effettiva a kill(). Si può vedere la corrispondenza tra i valori interi e il valore di sig usato nella tabella seguente.

Specificare un numero_segnale qualunque oltre a quelli indicati nella tabella causa effetti indefiniti.

numero_segnale | sig Value
0 | 0
1 | SIGHUP
2 | SIGINT
3 | SIGQUIT
6 | SIGABRT
9 | SIGKILL
14 | SIGALRM
15 | SIGTERM

Se il primo argomento è un intero negativo, viene interpretato come un'opzione di - numero_segnale, non come un operando negativo di pid che specifica un processo di gruppo.

OPERANDI

Devono essere supportati i seguenti operandi:

pid Uno dei seguenti:

    1.  Un intero decimale che specifica un processo o un gruppo di processi da segnalare. Il processo o i processi selezionati da valori positivi, negativi e zero dell'operando pid devono essere come descritto per la funzione kill(). Se si specifica il processo numero 0, sono segnalati tutti i processi del gruppo attuale. Vedere la funzione kill() definita nel volume System Interfaces di IEEE Std 1003.1-2001 per gli effetti dei numeri pid negativi. Se il primo operando pid è negativo, deve essere preceduto da "--" per evitare che venga interpretato come un'opzione.

    2.  Un job control job ID (vedere il volume Base Definitions di IEEE Std 1003.1-2001, sezione 3.203, Job Control Job ID) che identifica un processo di gruppo in background da segnalare. La notazione job control job ID si applica solo per chiamate di kill nell'ambito della shell in esecuzione; vedere Shell Execution Environment .

stato_uscita
    Un intero decimale che specifica un numero di segnale o lo stato di uscita di un processo terminato da un segnale.

STDIN

Non usato.

FILE DI INPUT

Vuoto.

VARIABILI D'AMBIENTE

Le seguenti variabili d'ambiente influenzano l'esecuzione di kill:

LANG
    Fornisce un valore predefinito per le variabili di internazionalizzazione non impostate o nulle. (Vedere il volume Base Definitions di IEEE Std 1003.1-2001, Sezione 8.2, Internationalization Variables per la precedenza delle variabili di internazionalizzazione usate per determinare i valori delle categorie locali.)

LC_ALL
    Se impostata ad un valore stringa non vuoto, sovrascrive i valori di tutte le altre variabili di internazionalizzazione.

LC_CTYPE
    Determina la localizzazione per l'interpretazione di sequenze di byte di dati di testo come caratteri (per esempio, caratteri single-byte o multi-byte negli argomenti).

LC_MESSAGES
    Determina la localizzazione da usare per influenzare il formato e i contenuti dei messaggi diagnostici scritti sullo standard error.

NLSPATH
    Determina la posizione di cataloghi di messaggi per l'elaborazione di LC_MESSAGES .

EVENTI ASINCRONI

Default.

STDOUT

Se non è specificata l'opzione -l non si deve usare lo standard output.

Se è specificata l'opzione -l, il nome simbolico di ogni segnale deve essere scritto nel seguente formato:

    "%s%c", <nome_segnale>, <separatore>

dove <nome_segnale> è maiuscolo, senza il prefisso SIG, e <separatore> è una <nuova_linea> o uno <spazio>. <separatore> è una <nuova_linea> per l'ultimo segnale scritto.

Se sono specificati l'opzione -l e l'operando stato_uscita, il nome simbolico del segnale corrispondente deve essere scritto nel seguente formato:

    "%s\n", <nome_segnale>

STDERR

Lo standard error si usa solo per messaggi diagnostici.

FILE DI OUTPUT

Vuoto.

DESCRIZIONE ESTESA

Vuoto.

STATO DI USCITA

In uscita devono essere restituiti i seguenti valori:

0   E' stato trovato almeno un processo corrispondente per ogni operando pid, ed è stato elaborato con successo il segnale specificato per almeno un processo corrispondente.

>0  Si è verificato un errore.

CONSEGUENZE DEGLI ERRORI

Default.

Le seguenti sezioni sono informative    .

USO DELL'APPLICAZIONE

I numeri di processo possono essere trovati usando ps.

La notazione job control job ID può funzionare diversamente da quanto previsto quando kill opera nel suo proprio ambiente di esecuzione. In entrambi questi esempi:

    nohup kill %1 &
    system("kill %1");

kill agisce in ambienti diversi, e non condivide il modo di interpretare i numeri di job della shell.

ESEMPI

Ognuno di questi comandi:

    kill -9 100 -165
    kill -s kill 100 -165
    kill -s KILL 100 -165

invia il segnale SIGKILL al processo con ID di processo 100 e a tutti i processi con ID di gruppo 165, assumendo che il processo che invia il segnale abbia i permessi necessari per farlo, e che i processi esistano.

Il volume System Interfaces di IEEE Std 1003.1-2001 e questo volume di IEEE Std 1003.1-2001 non richiedono numeri di segnale specifici per ogni nome_segnales. Perfino l'opzione - numero_segnale offre nomi simbolici (benché numerici) per i segnali. Se un processo viene terminato da un segnale il suo stato d'uscita indica il segnale che l'ha terminato, ma non vengono specificati i valori esatti. Comunque, si può usare l'opzione kill -l per tracciare numeri di segnale decimali e valori dello stato di uscita all'interno del nome del segnale. Gli esempi seguenti riportano lo stato di un lavoro terminato::

    job
    stat=$?
    if [ $stat -eq 0 ]
    then
        echo lavoro completato con successo.
    elif [ $stat -gt 128 ]
    then
        echo lavoro terminato dal segnale SIG$(kill -l $stat).
    else
        echo lavoro terminato con il codice di errore $stat.
    fi

Per inviare il segnale predefinito ad un processo di gruppo (per esempio 123), un'applicazione deve usare un comando simile ad uno dei seguenti:

    kill -TERM -123
    kill -- -123

LOGICA

L'opzione -l nasce dalla shell C, ed è implementata anche nella KornShell. L'output della shell C può consistere in righe multiple di output, perché in alcuni terminali video i nomi di segnale non entrano in una riga sola. L'output della KornShell includeva anche i numeri di segnale definiti dall'implementazione, ed un'opportuna analisi era considerata dai normali sviluppatori troppo difficile per gli script. Il formato dell'output specificato non serve solo per venire incontro all'output storico della shell C, ma anche per permettere un elenco completamente verticale o completamente orizzontale su sistemi per i quali questo tipo di output sia adeguato.

Una precedente proposta inventò il nome SIGNULL come nome_segnale per il segnale 0 (usato dal volume System Interfaces di IEEE Std 1003.1-2001 per verificare l'esistenza di un processo senza inviare un segnale). Dato che il nome_segnale 0 può in questo caso essere usato senza ambiguità, SIGNULL è stato rimosso.

Un'altra precedente proposta richiedeva che i nome_segnale simbolici fossero riconosciuti con o senza il prefisso SIG. Versioni storiche di kill non riportavano il prefisso SIG per l'opzione -l, e non riconoscevano il prefisso SIG sui nome_segnale. Dato che né la portabilità delle applicazioni né la semplicità d'uso verrebbero migliorati usando questa estensione, essa non è più richiesta.

Per evitare l'ambiguità di un argomento iniziale numerico negativo che specifichi sia un numero di segnale che un gruppo di processo, l'IEEE Std 1003.1-2001 obbliga le implementazioni che supportano l'opzione XSI a considerare sempre il primo. Esso richiede inoltre che le applicazioni conformi usino sempre l'argomento che termina le opzioni "--" nello specificare un processo di gruppo, a meno che sia specificata anche un'opzione.

L'opzione -s è stata aggiunta in risposta all'interesse internazionale nell'avere una qualche forma di kill che soddisfacesse le Utility Syntax Guidelines.

La notazione job control job ID può funzionare diversamente da quanto previsto quando kill opera nel suo proprio ambiente di esecuzione. In entrambi questi esempi:

    nohup kill %1 &
    system("kill %1");

kill agisce in ambienti diversi, e non può capire come la shell ha gestito i suoi numeri di job.

DIREZIONI FUTURE

Vuoto.

VEDERE ANCHE

Shell Command Language , ps , wait() , il volume System Interfaces di IEEE Std 1003.1-2001, kill(), il volume Base Definitions di IEEE Std 1003.1-2001, <signal.h>

COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .