Guida avanzata a Solaris

Processi e PID

Non appena il sistema interpreta un comando, per la sua esecuzione viene creato un processo indipendente dotato di un numero di identificazione (PID) esclusivo. Il sistema utilizza il PID per tenere traccia dello stato corrente di ogni processo.

Visualizzazione dei comandi in esecuzione (ps)

Il comando ps permette di visualizzare i processi in corso di esecuzione. Oltre a visualizzare il numero di identificazione del processo (PID) per tutti i processi di proprietà dall'utente (cioè creati in seguito a un comando digitato dall'utente), ps indica anche il terminale dal quale il processo è stato avviato (TTY), il tempo della cpu utilizzato fino a quel momento (TIME) e il comando in corso di esecuzione (COMMAND).

Aggiungendo l'opzione -l al comando ps, il sistema visualizza una serie di altre informazioni relative ai processi correntemente attivi, tra cui lo stato di tutti i processi (elencati sotto S). I codici utilizzati per l'indicazione degli stati sono i seguenti:

È importante ricordare che durante l'esecuzione di ps lo stato dei processi può cambiare. Poiché il comando ps fornisce solo uno spaccato di ciò che accade in un determinato momento, le informazioni visualizzate valgono solo per l'istante successivo all'invio del comando. Di conseguenza, l'output di ps potrebbe non essere perfettamente aggiornato.

Il comando ps(1) dispone di altre opzioni non trattate in questo paragrafo. Per informazioni più approfondite, vedere man Pages(1): User Commands.

Interruzione dei processi (kill)

Il comando kill permette di interrompere in modo diretto un processo in esecuzione. Questo risulta particolarmente utile quando si avvia per errore un comando che comporta un certo tempo di esecuzione.

Per interrompere un processo:

  1. Digitare ps per visualizzare il PID del processo.

  2. Digitare kill seguito dal PID del processo.

    L'esempio seguente illustra la procedura da seguire:

    $ ps
    PID    TTY    TIME    COMMAND
    1291   co     0:12    -bin/csh (csh)
    3250   p0     0:00    ps
    1286   p1     0:05    -bin/csh (csh)
    3248   p1     0:05    vi commands
    $ kill 1291
    [1}  Terminated       -bin/csh/ (csh)
    $

    Un metodo più rapido per determinare il PID del processo consiste nell'inviare l'output di ps al comando grep utilizzando il simbolo di pipe. Ad esempio:

    $ ps | grep nomecomando
    

    dove nomecomando è il nome del processo che si desidera interrompere.

    Per interrompere forzatamente un processo, usare il comando ps con l'opzione -9 nella forma seguente:

    $ kill -9 nPID
    

    dove nPID è il numero di identificazione del processo che si desidera interrompere.