processes unix process control
Gestione dei processi in Unix:
In Unix, tutte le istruzioni al di fuori del kernel vengono eseguite nel contesto di un processo.
Un processo è una sequenza di istruzioni e ogni processo è associato a un blocco di dati controllati. I processi possono essere manipolati in un modo simile a come possono essere manipolati i file.
Per esempio, come 'ls' può essere utilizzato per visualizzare l'elenco dei file, 'ps' può essere utilizzato per visualizzare l'elenco dei processi.
Video Unix n. 23:
In questo tutorial, tratteremo quali informazioni relative al processo vengono memorizzate e descriveremo anche alcuni comandi utilizzati per gestire i processi. Forniremo anche una breve descrizione di come eseguire il debug degli script di comando.
Cosa imparerai:
Informazioni sul processo Unix
La tabella dei processi contiene le informazioni di tutti i processi attualmente in esecuzione. Lo scopo principale di questa tabella è gestire in modo efficace tutti i processi in esecuzione.
qual è il miglior software di ottimizzazione per PC
Nota: Essendo un sistema operativo multitasking e multiutente, Unix avrà molti processi in esecuzione allo stesso tempo.
La tabella contiene informazioni come:
- ID processo
- ID processo padre
- Stato dei processi
- uso della CPU
I processi in Unix passano attraverso vari stati a seconda delle varie circostanze. I cambiamenti di stato possono essere innescati dal fatto che un processo debba attendere il completamento di un'operazione di lettura o scrittura o quando è necessario dare la possibilità di eseguire un altro processo più urgente.
Comandi di controllo del processo
Sono disponibili numerosi comandi per rivedere e manipolare i processi. Il comando 'ps' può essere utilizzato per visualizzare le informazioni sullo stato del processo.
Comando | ps - fornisce informazioni su tutti i processi attualmente in esecuzione. |
---|---|
Sintassi comune | $ ps (OPZIONI) |
Esempio 1 | $ ps Fornisce informazioni sul processo compreso il PID, il nome del terminale, l'ora di creazione e il nome dei processi. |
Come discusso in un'esercitazione precedente, i processi possono essere classificati come in primo piano, in background o daemon. Quando un comando viene eseguito dal terminale, viene eseguito normalmente in primo piano. Per eseguire un processo in background, è possibile utilizzare il pulsante '&' alla fine del comando.
Esempio:
$ grep “how” file1 > file2 &
Questo comando cercherà le righe contenenti il pattern 'come' e memorizzerà l'output in file2. Se file1 è abbastanza grande, potremmo voler procedere con altre azioni ed eseguire questo comando in background. Con '&' alla fine, questo comando verrà eseguito come un processo in background.
È possibile sospendere un processo in primo piano utilizzando il comando '^ Z'. Questo comando sposta il processo in primo piano corrente in uno stato sospeso in background. Da lì, il processo può essere spinto a riprendere in background utilizzando il comando 'bg' oppure può essere riportato in primo piano utilizzando il comando 'fg'.
Ogni processo è anche associato a una priorità. Viene utilizzato per garantire che il sistema operativo sia in grado di allocare in modo equo il tempo per varie attività di elaborazione. Il comando 'nice' può essere utilizzato per ridurre la priorità di un processo e quindi essere 'gentile' con gli altri processi, ad es.
$ bello
Questa riga eseguirà il comando specificato con una priorità inferiore - per impostazione predefinita, la priorità verrà ridotta di 10. Il comando accetta anche un parametro che può essere utilizzato per utilizzare un diverso livello di 'gentilezza'.
Esempio:
$ nice -20 ls
Questo comando esegue 'ls' con la priorità ridotta di 20.
È anche possibile aumentare la priorità con una 'gentilezza' negativa. Tuttavia, questo richiede l'autorizzazione del superutente.
Quando un terminale o una sessione di accesso viene chiusa, invia il segnale SIGHUP ai processi figli. Per impostazione predefinita, questo segnale farà terminare i processi figli. Il comando 'nohup' può essere utilizzato per consentire ai comandi di continuare a essere eseguiti anche quando la sessione di accesso è terminata.
Esempio:
$ nohup soft file1 > file2
Con questo comando, l'ordinamento di file1 e il salvataggio nel processo di file2 continueranno anche se siamo usciti dal sistema.
Il comando 'kill' può essere utilizzato per terminare qualsiasi processo a seconda delle autorizzazioni.
Esempio:
$ kill (options)
Questo comando terminerà un processo con l'id del processo. Il PID di un processo può essere ottenuto utilizzando il comando 'ps'.
Questo comando 'at' viene utilizzato per eseguire comandi in una data e ora particolare in futuro.
Esempio:
$ at 8pm sort file1>file2
Debug di Unix
Unix fornisce una serie di meccanismi per aiutare a trovare bug negli script dei comandi. Questi meccanismi possono essere utilizzati per visualizzare una traccia di ciò che viene eseguito, ovvero la sequenza in cui vengono eseguiti i comandi. La traccia può essere utilizzata per comprendere e verificare la logica e il flusso di controllo dello script.
=> imposta -v
modalità dettagliata: L'impostazione di questa opzione prima di eseguire un comando assicurerà che il comando che verrà eseguito venga stampato su stdout prima di essere effettivamente eseguito.
=> imposta -x
modalità traccia esecuzione: L'impostazione di questa opzione visualizzerà ogni comando mentre viene eseguito insieme ai suoi argomenti.
=> imposta -n
modalità no-exec: L'impostazione di questa opzione mostra eventuali errori senza eseguire effettivamente alcun comando.
Dai un'occhiata al nostro prossimo tutorial per saperne di più Scripting avanzato della shell.
Tutorial PREV | PROSSIMO Tutorial
Lettura consigliata
- Comandi di controllo dei processi Unix come Ps e Top (Parte C)
- Comandi Unix: comandi Unix di base e avanzati con esempi
- Comandi di elaborazione del testo Unix: filtri Unix con esempi
- Tutorial su Unix Pipes: Pipes nella programmazione Unix
- Più filtri Unix e Awk, comandi Sed nell'elaborazione del testo
- Argomenti della riga di comando nello script della shell Unix con esempio
- Tutorial UNIX per principianti (oltre 20 video di formazione approfonditi su Unix)
- Come confrontare due file in Unix: comandi di confronto file