kill (Unix)

De Viquipèdia
Dreceres ràpides: navegació, cerca


En sistemes operatius Unix o Unix-like, kill és una ordre utilitzada per enviar missatges senzills als processos que s'estan executant al sistema. Per defecte el missatge enviat és el senyal "TERMination" (senyal SIGTERM, de la combinació de paraules angleses SIGnal i TERMination) que demana al procés que aturi la seva execució.

El nom de l'ordre kill porta a confusió, ja que aquesta no sempre està associada a l'eliminació de processos. L'ordre kill no és res més que una ordre que utilitza la crida de sistema homònima kill. Aquesta crida de sistema s'encarrega d'enviar un senyal a un procés identificat pel seu identificador de procés (PID).

Hi han múltiples senyals possibles que poden ser enviats a un procés (vegeu Senyal (informàtica) per a una llista completa). D'aquests els més utilitzats són sovint els senyals SIGTERM i SIGKILL.

Quan executem:

$ kill 9678

Estem enviant al procés identificat amb l'identificador de procés (PID) 9678 el senyal per defecte (SIGTERM). Els programes que implementen un controlador per a aquest senyal, poden realitzar operacions de neteja o operacions prèvies (com per exemple guardar la configuració actual en un fitxer) a la finalització de la seva execució. De totes maneres, molts programes no implementen un controlador per a aquest senyal i aleshores es crida al controlador per defecte (la implementació del qual sovint és no fer res).

Tots els senyals excepte els senyals SIGKILL i SIGSTOP poden ser interceptats per un procés mitjançant la implementació de controladors de senyal. Un controlador no és res més que una funció que s'executa quan el procés rep un senyal. Les dues excepcions, SIGKILL i SIGSTOP, són gestionades només pel nucli del sistema operatiu, permetent d'aquesta forma que el nucli pugui controlar l'execució dels processos. El senyal SIGKILL elimina el procés i el senyal SIGSTOP atura la seva execució (fins que es rep un senyal SIGCONT, que indica que el procés pot continuar amb la seva execució).

Unix proveeix de mecanismes de seguretat per tal de prevenir que usuaris sense autorització puguin aturar altres processos. El mecanisme bàsic de seguretat, és que el propietari del procés que envia el senyal ha se ser el mateix que el propietari del procés que rep el senyal. L'única excepció és el superusuari que pot enviar qualsevol senyal a qualsevol procés.

Els senyals disponibles tenen diferents noms i estan relacionats amb certs nombres. És important destacar que la relació entre nom de senyal i el seu valor numèric pot variar entre diferents implementacions de UNIX.

Exemples[modifica | modifica el codi]

Es pot enviar un senyal SIGTERM de 3 formes diferents (en l'exemple el procés té el PID 1234):

$ kill 1234
$ kill -TERM 1234
$ kill -15 1234

Tenim dos formes de finalitzar un procés amb el senyal SIGKILL:

$ kill -KILL 1234
$ kill -9 1234

Ordres relacionades[modifica | modifica el codi]

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]