Manuale dell'utente del CDE Solaris

Capitolo 19 Uso della Gestione dei processi

La Gestione dei processi permette di visualizzare tutti i processi in esecuzione sulla workstation e di eseguirvi alcune operazioni. Tali operazioni possono essere eseguite senza bisogno di conoscere la sintassi di ps(1), truss(1), kill(1) e altri comandi del sistema operativo. Ove opportuno, per ogni operazione della Gestione dei processi viene indicato il comando UNIX equivalente.

Introduzione ai processi

Il sistema operativo UNIX opera per mezzo di processi. La shell di login, i programmi applicativi, le sessioni di modifica e persino il programma ls che visualizza l'elenco dei file sono processi controllati dall'ambiente operativo.

UNIX permette di eseguire una serie di operazioni su questi processi. Ad esempio, è possibile visualizzare tutti i programmi in esecuzione sul sistema, arrestare e riavviare i programmi desiderati ed eseguire operazioni di debugging sui processi “erranti”, cioè che presentano comportamenti anomali.

Suggerimenti per l'individuazione dei processi erranti

Un processo si dice “errante” quando non presenta il comportamento previsto. Ad esempio, è possibile che un processo consumi una grande percentuale delle risorse disponibili a causa di un problema (bug), o che interferisca con altri processi. La Gestione dei processi permette di individuare i processi erranti quando si verificano le seguenti condizioni:

Quando si visualizzano tutti i processi, l'output della Gestione dei processi può comprendere da trenta a cinquanta voci, perciò la ricerca dei processi erranti può essere difficile per gli utenti meno esperti. Se non si può contattare l'amministratore di sistema, i seguenti suggerimenti possono essere d'aiuto:

Campionamento, visualizzazione e salvataggio delle informazioni sui processi

La Gestione dei processi permette di visualizzare ed esaminare i processi in esecuzione sulla workstation.

Figura 19–1 Finestra della Gestione dei processi con i processi contenenti la stringa “audio”.

Graphic

Per ogni processo vengono fornite le informazioni indicate nella tabella seguente:

 Titolo della colonna Significato
 ID ID del processo
 Nome Nome del processo
 Prop. Nome del proprietario
 CPU% Rapporto tra il tempo della CPU usato recentemente e il tempo disponibile nello stesso periodo, espresso in percentuale
 RAM Quantità di RAM correntemente occupata dal processo
  Swap Dimensione totale della memoria virtuale
 Avviato Ora di avvio effettiva (o data di avvio, se diversa da quella corrente)
 Padre ID del processo padre, o PPID
 Comando Comando UNIX (troncato) effettivamente eseguito

È possibile eseguire le seguenti operazioni senza influire sui processi della workstation selezionata:

Avviare la Gestione dei processi

    Fare clic sul controllo Trova processo nel pannello secondario Strumenti del Pannello principale.

    Viene aperta la finestra della Gestione dei processi. Il programma inizia immediatamente a campionare i parametri della workstation e visualizza un campione di tutti i processi correnti.

Visualizzare un sottoinsieme dei processi

  1. Inserire i caratteri di filtro nel campo Filtra della finestra della Gestione dei processi.

    Il filtro dovrebbe essere una stringa di caratteri comune al sottoinsieme di processi che si desidera visualizzare. Ad esempio, nella Figura 19–1, vengono visualizzati tutti i processi relativi all'applicazione Audio.

  2. Premere Return.

    La Gestione dei processi aggiornerà la visualizzazione dell'area di scorrimento per presentare solo i processi che contengono la stringa di filtro specificata.

  3. Per tornare a visualizzare tutti i processi, azzerare il campo Filtra e premere Return.

Ricercare un processo

  1. Digitare il testo da ricercare nella casella Trova, oppure selezionare uno dei testi precedentemente usati dall'elenco Trova.

    Il testo da ricercare dovrebbe essere una stringa di caratteri comuni ai processi che si desidera visualizzare.

  2. Premere Return per evidenziare la prima ricorrenza del testo specificato a partire dalla posizione corrente del cursore.

    Il testo può trovarsi in uno qualsiasi dei campi di descrizione del processo.

  3. Premere Return per evidenziare la ricorrenza successiva, e così via.

  4. Una volta individuato il processo richiesto, azzerare il campo Trova.


    Nota –

    Una volta raggiunta la fine dell'area di scorrimento, la ricerca non riprende dall'inizio dell'elenco. Per eseguire la ricerca su tutti i processi è perciò necessario selezionare il primo processo dell'elenco prima di digitare il testo desiderato nella casella Trova.


Cambiare l'ordine di visualizzazione

Nella configurazione predefinita, la Gestione dei processi elenca i processi in base all'utilizzo della CPU, in ordine decrescente. Questa impostazione è denotata dal fatto che il titolo della colonna relativa all'utilizzo della CPU (CPU%), che è “premuto” a differenza degli altri titoli della finestra.

  1. Per selezionare la colonna in base alla quale si desidera ordinare i processi, fare clic sul titolo corrispondente, oppure scegliere il nome della colonna dal menu Visualizza.

    I processi verranno visualizzati nel nuovo ordine. L'ordinamento predefinito per ogni colonna è indicato nella tabella seguente.

    Tabella 19–1 Ordine di visualizzazione predefinito per i processi
     Colonna selezionata Metodo
     ID Ordinamento numerico in base all'ID, in ordine crescente
     Nome Ordinamento alfabetico in base al nome
     Prop. Ordinamento alfabetico in base al nome del proprietario
     CPU% Ordinamento in base all'utilizzo della CPU, in ordine decrescente
     RAM Ordinamento in base all'utilizzo della RAM, in ordine decrescente
      Swap Ordinamento in base all'utilizzo dello spazio di swap, in ordine decrescente
     Avviato Ordinamento cronologico in base all'ora di avvio, in ordine decrescente
     Padre Ordinamento numerico in base all'ID del processo padre, in ordine decrescente
     Comando Ordinamento alfabetico in base al percorso completo, in ordine decrescente (i caratteri speciali, come /, hanno un valore inferiore a quello delle lettere)

  2. (Opzionale) Per invertire l'ordine di visualizzazione in una colonna (ad esempio, per elencare i processi in base all'utilizzo della RAM in ordine crescente), fare clic sul pulsante “premuto” della relativa colonna.

    Il titolo della colonna diventerà nero e i processi verranno elencati in ordine inverso.

    Graphic

Cambiare l'intervallo di campionamento

Nella configurazione predefinita, la Gestione dei processi esegue un campionamento dei parametri della workstation e aggiorna la visualizzazione ogni 30 secondi.

    Per disabilitare/abilitare il campionamento continuo, scegliere Avvia/Arresta dal menu Campionamento.

    Se è attivo il campionamento continuo, nel menu Campionamento comparirà l'opzione Arresta; diversamente, l'opzione disponibile sarà Avvia.

    Per cambiare l'intervallo tra i campionamenti, inserire il numero di secondi desiderato (sono accettati valori fino a 604800, pari a 14 giorni) nella casella Campiona ogni.

    Premere Return per rendere effettiva la nuova frequenza di campionamento.

    Per eseguire subito un campionamento, scegliere Adesso dal menu Campionamento.

    La Gestione dei processi eseguirà il campionamento e aggiornerà la visualizzazione.

Copia e salvataggio

È possibile selezionare e copiare una o più delle informazioni visualizzate sui processi, e incollare il testo copiato in altre applicazioni.

Sono inoltre disponibili le seguenti opzioni per salvare i dati del campionamento in un file:

Creare un file contenente il campionamento corrente

  1. Scegliere Salva con nome dal menu Campionamento.

    Verrà aperta a finestra di dialogo Salva con nome.

  2. Specificare il nome e la posizione del file da creare e fare clic su OK.

    La Gestione dei processi creerà un file di testo contenente le informazioni correntemente visualizzate.

Creare un file di log

  1. Scegliere File di log dal menu Campionamento.

    Verrà aperta la finestra di dialogo Log File.

  2. Specificare il nome e la posizione del file da creare e fare clic su OK.

    La Gestione dei processi creerà un file di testo in cui salverà le informazioni di tutti i campionamenti successivi (con le relative intestazioni).


    Avvertenza – Avvertenza –

    La Gestione dei processi continuerà ad aggiungere i dati di campionamento a questo file finché l'applicazione non verrà terminata, o finché non verrà selezionata l'opzione Arresta la registrazione dal menu Campionamento.


Esecuzione di operazioni su un processo selezionato

Selezionando un processo dell'elenco, è possibile eseguirvi le seguenti operazioni:


Avvertenza – Avvertenza –

Per informazioni sulle implicazioni di queste procedure, rivolgersi all'amministratore di sistema.


Invio di un segnale di interruzione a un processo

Il comando “kill” di UNIX permette di inviare un segnale a un processo. Un segnale è un messaggio inviato per interrompere un processo e ottenere una risposta. Se il processo è strutturato in modo da rispondere al segnale inviato, l'utente riceverà una risposta; diversamente, il processo verrà terminato. La tabella seguente contiene alcuni dei segnali usati più comunemente (identificati per nome e numero) e il relativo significato.

 N. del segnale Nome del segnale Significato
 1 HUP Hangup (spesso utilizzato prima di un logout)
 2 INT Interrupt (equivale a premere Control+C in una sessione di terminale)
  9 KILL

Kill (termina il processo senza cleanup) 

Questo comando può essere eseguito solo dal proprietario del processo o dal superutente 

Il programma non può rispondere a questo segnale, e deve essere interrotto  

 15 TERM

Kill (termina il processo dopo il cleanup) 

Questo comando può essere eseguito solo dal proprietario del processo o dal superutente 

L'opzione Kill permette di interrompere un processo velocemente inviando un segnale di interruzione (kill 9). L'opzione Signal offre un maggior controllo sul segnale inviato dal comando kill(1). Ad esempio, permette di inviare un segnale INT o HUP.


Avvertenza – Avvertenza –

Prima di inviare un segnale a un processo, è importante comprenderne le implicazioni. Ad esempio, se si seleziona la shell di login e quindi si invia un segnale kill, la sessione terminerà immediatamente. Per maggiori informazioni sui processi e sul controllo dei lavori, rivolgersi all'amministratore di sistema o vedere il manuale Solaris Advanced User's Guide (Sun Microsystems).


Per interrompere velocemente un processo

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere Interrompi dal menu Processo.

    Se l'utente possiede le autorizzazioni richieste, il processo selezionato verrà terminato (insieme ai suoi processi figli); diversamente verrà generato un messaggio di errore. A volte l'interruzione di un processo può richiedere diversi secondi. Per verificare che il processo sia stato interrotto, controllare che non compaia al successivo aggiornamento della visualizzazione della Gestione dei processi.


    Suggerimento –

    Il comando UNIX equivalente è:

    kill -9 PID dove PID è l'ID del processo selezionato.

    Il comando eseguito dall'opzione Interrompi può essere modificato ridefinendo l'azione 'Kill' nel file:

    /usr/dt/appconfig/types/it/sdtprocess.dt


Per inviare un segnale a un processo

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere Segnale dal menu Processo.

    Verrà aperta una finestra di dialogo in cui si dovranno specificare i segnali desiderati. Si dovrà inserire almeno uno dei 42 segnali definiti nella pagina man signal(5).

  3. Inserire il numero o il nome del segnale desiderato e fare clic su OK.

    Il comando verrà eseguito e la finestra di dialogo verrà chiusa. Non verrà generato nessun messaggio di conferma. L'interruzione di un processo ha effetto generalmente anche sui processi figli.


Suggerimento –

Il comando UNIX equivalente è:kill -num_nome_segnale PID

dove -num_nome_segnale è il numero o il nome del segnale, e PID è l'ID del processo selezionato.


Identificare il proprietario di un processo

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere “Cerca il proprietario” dal menu Processo.

    Verrà avviata la Gestione degli indirizzi, che cercherà le schede relative all'utente del sistema associato al processo selezionato. Per maggiori informazioni sulla Gestione degli indirizzi, vedere il Capitolo 18.

Visualizzare i progenitori di un processo

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere “Mostra progenitore” dal menu Processo.

    Verrà aperta una finestra contenente “l'albero genealogico” del processo specificato. I processi figli appaiono rientrati rispetto al padre.

    Graphic

Suggerimento –

Il comando UNIX equivalente è:

/usr/proc/bin/ptree PID

dove PID è l'ID del processo selezionato.


Rintracciare i processi figli

Quando un processo UNIX dà origine a uno o più processi dipendenti, questi vengono chiamati processi figli. Il processo padre e i relativi figli hanno lo stesso ID utente.

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere “Traccia figli” dal menu Processo.

    Verrà presentato uno schema relativo alla creazione dei processi figli (e degli eventuali figli di questi ultimi) da parte del processo selezionato.

    Gli errori vengono riportati con i codici descritti nella pagina man Intro(2).


    Suggerimento –

    Il comando UNIX equivalente è:

    truss -fa -texec,fork -s¦CLD,ALRM -p PID

    dove PID è l'ID del processo selezionato.


Rintracciare le chiamate di sistema

Durante l'esecuzione, i processi effettuano chiamate al kernel UNIX, dette chiamate di sistema. L'identificazione di queste chiamate può essere utile per stabilire se abbiano effetto sugli altri processi.

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere “Traccia le chiamate di sistema” dal menu Processo.

    Verrà aperta una finestra di dialogo in cui si potranno inserire argomenti opzionali.

  3. Fare clic su OK.

    Ogni riga dell'output riporterà l'errore, il nome del segnale o il nome della chiamata di sistema, con i relativi argomenti e valori restituiti. Per maggiori informazioni, vedere la pagina man truss(1).


Suggerimento –

Il comando UNIX equivalente è:

truss -p PID

dove PID è l'ID del processo selezionato.


Visualizzare lo stack di un processo

  1. Selezionare un processo nell'area di scorrimento della Gestione dei processi.

  2. Scegliere “Mostra lo stack” dal menu Processo.

    Verrà aperta una finestra contenente la traccia esadecimale e simbolica dello stack del processo selezionato.


Suggerimento –

Il comando UNIX equivalente è:

/usr/proc/bin/pstack PID

dove PID è l'ID del processo selezionato.


Eseguire il debugging di un processo

Gli sviluppatori di applicazioni e gli amministratori di sistema sono soliti utilizzare applicazioni di debugging, come Sun Workshop, per esaminare i processi erranti. L'opzione Debug del menu Processo permette di eseguire il proprio debugger preferito sul processo selezionato.

    Eseguire il debugging del processo usando un debugger di propria scelta.


Suggerimento –

Il comando UNIX equivalente è:

workshop -d comando

dove workshop è il nome del debugger e comando è il comando da eseguire per passare l'ID del processo al debugger.