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.
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.
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:
Le prestazioni o i tempi di risposta della workstation sembrano rallentati.
Un programma non risponde agli input dell'utente.
Non si ottiene risposta da un servizio standard, ad esempio una stampa, un trasferimento di file o un login remoto.
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:
Usare la Misurazione delle prestazioni per controllare se l'utilizzo della CPU o l'utilizzo del disco siano eccezionalmente elevati. In questo caso, si potrà usare la Gestione dei processi per individuare il processo errante.
La Gestione dei processi può essere usata per identificare:
I processi che utilizzano in modo anomalo una grande percentuale della CPU o della RAM disponibile
I processi “orfani” il cui padre sia tornato all'ID 1, cioè init (ma escludendo i processi come sched, dtlogin o cron, il cui processo padre deve avere normalmente l'ID 1)
I processi avviati da molto tempo che non si sono conclusi nel tempo previsto
I processi voluminosi di proprietà di un altro utente che penalizzano le prestazioni
La Gestione dei processi permette di visualizzare ed esaminare i processi in esecuzione sulla workstation.
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:
Visualizzare tutti i processi, o solo quelli che contengono una determinata stringa
Individuare i processi che contengono una determinata stringa di caratteri
Visualizzare i processi ordinandoli in base a una qualsiasi delle colonne dell'area di scorrimento
Cambiare l'intervallo di campionamento, e copiare e salvare le informazioni di campionamento
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.
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.
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.
Per tornare a visualizzare tutti i processi, azzerare il campo Filtra e premere Return.
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.
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.
Premere Return per evidenziare la ricorrenza successiva, e così via.
Una volta individuato il processo richiesto, azzerare il campo Trova.
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.
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.
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 processiColonna 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) |
(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.
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.
È 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 solo i dati del campionamento corrente
Creare un file di log in cui salvare i dati di tutti i campionamenti
Scegliere Salva con nome dal menu Campionamento.
Verrà aperta a finestra di dialogo Salva con nome.
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.
Scegliere File di log dal menu Campionamento.
Verrà aperta la finestra di dialogo Log File.
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).
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.
Selezionando un processo dell'elenco, è possibile eseguirvi le seguenti operazioni:
Inviare un segnale di interruzione per terminare il processo o sollecitare una risposta
Cercare maggiori informazioni sul proprietario nella Gestione degli indirizzi
Rintracciare le chiamate di sistema, visualizzare i processi figli o eseguire un debugger
Visualizzare lo stack del processo o i suoi antenati
Per informazioni sulle implicazioni di queste procedure, rivolgersi all'amministratore di sistema.
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.
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).
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
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.
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
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
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).
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.
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.
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
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.
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
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.
Il comando UNIX equivalente è:
/usr/proc/bin/ptree PID
dove PID è l'ID del processo selezionato.
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.
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
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).
Il comando UNIX equivalente è:
truss -fa -texec,fork -s¦CLD,ALRM -p PID
dove PID è l'ID del processo selezionato.
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.
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
Scegliere “Traccia le chiamate di sistema” dal menu Processo.
Verrà aperta una finestra di dialogo in cui si potranno inserire argomenti opzionali.
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).
Il comando UNIX equivalente è:
truss -p PID
dove PID è l'ID del processo selezionato.
Selezionare un processo nell'area di scorrimento della Gestione dei processi.
Scegliere “Mostra lo stack” dal menu Processo.
Verrà aperta una finestra contenente la traccia esadecimale e simbolica dello stack del processo selezionato.
Il comando UNIX equivalente è:
/usr/proc/bin/pstack PID
dove PID è l'ID del processo selezionato.
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.
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.