androide

Come eseguire i comandi di Linux in background

Keylogger tastiera WINDOWS 10 e LINUX in Python

Keylogger tastiera WINDOWS 10 e LINUX in Python

Sommario:

Anonim

In genere quando si esegue un comando nel terminale, è necessario attendere fino al termine del comando prima di poter immettere un altro. Questo si chiama eseguendo il comando nel processo in primo piano o in primo piano. Quando un processo viene eseguito in primo piano, occupa la shell e puoi interagire con esso utilizzando i dispositivi di input.

Cosa succede se il comando impiega molto tempo per terminare e si desidera eseguire altri comandi nel frattempo? Hai diverse opzioni a tua disposizione. L'opzione più ovvia e semplice è quella di avviare una nuova sessione di shell ed eseguire il comando al suo interno. Un'altra opzione è eseguire il comando in background.

Un processo in background è un processo / comando che viene avviato da un terminale e viene eseguito in background, senza interazione da parte dell'utente., parleremo dei processi in background è Linux. Ti mostreremo come avviare un comando in background e come mantenere il processo in esecuzione dopo la chiusura della sessione della shell.

Esegui un comando Linux in background

Per eseguire un comando in background, aggiungi il simbolo & commerciale ( & ) alla fine del comando:

command &

L'ID del lavoro shell (racchiuso tra parentesi) e l'ID processo verranno stampati sul terminale:

25177

Puoi avere più processi in esecuzione contemporaneamente in background.

Il processo in background continuerà a scrivere messaggi sul terminale da cui è stato richiamato il comando. Per sopprimere i messaggi stdout e stderr utilizzare la sintassi seguente:

command > /dev/null 2>&1 &

>/dev/null 2>&1 significa reindirizzare stdout a /dev/null e stderr a stdout .

Utilizzare l'utility jobs per visualizzare lo stato di tutti i processi arrestati e in background nella sessione di shell corrente:

jobs -l

L'output include il numero del processo, l'ID processo, lo stato del processo e il comando che ha avviato il processo:

+ 25177 Running ping google.com &

Per portare in primo piano un processo in background, usa il comando fg :

fg

fg %1

Per terminare il processo in background, utilizzare il comando kill seguito dall'ID processo:

kill -9 25177

Sposta un processo in primo piano sullo sfondo

Per spostare un processo in primo piano in esecuzione in background:

  1. Arresta il processo digitando Ctrl+Z Sposta il processo interrotto sullo sfondo digitando bg .

Mantieni in esecuzione i processi in background dopo l'uscita di una shell

Se la connessione si interrompe o ci si disconnette dalla sessione della shell, i processi in background vengono terminati. Esistono diversi modi per mantenere il processo in esecuzione al termine della sessione di shell interattiva.

Un modo è rimuovere il lavoro dal controllo dei lavori della shell usando la shell nascosta incorporata:

disown

disown %1

Verificare che il lavoro sia rimosso dalla tabella dei lavori attivi usando il comando jobs -l . Per elencare tutti i processi in esecuzione, incluso quello sconosciuto, utilizzare il comando ps aux .

Un altro modo per mantenere in esecuzione un processo dopo l'uscita della shell è usare nohup .

Il comando nohup esegue un altro programma specificato come argomento e ignora tutti i SIGHUP (hangup). SIGHUP è un segnale che viene inviato a un processo quando il suo terminale di controllo è chiuso.

Per eseguire un comando in background utilizzando il comando nohup , digitare:

nohup command &

L'output del comando viene reindirizzato al file nohup.out .

nohup: ignoring input and appending output to 'nohup.out'

alternative

Esistono numerosi programmi che ti consentono di avere più sessioni interattive contemporaneamente.

Schermo

Screen o GNU Screen è un programma multiplexer terminale che consente di avviare una sessione dello schermo e aprire un numero qualsiasi di finestre (terminali virtuali) all'interno di quella sessione. I processi in esecuzione sullo schermo continueranno a essere eseguiti quando la loro finestra non è visibile anche se si viene disconnessi.

tmux

Tmux è una moderna alternativa allo schermo GNU. Con Tmux, puoi anche creare una sessione e aprire più finestre all'interno di quella sessione. Le sessioni di Tmux sono persistenti, il che significa che i programmi in esecuzione in Tmux continuano a funzionare anche se si chiude il terminale.

Conclusione

Per eseguire un comando in background, includere & alla fine del comando.

Quando si esegue un comando in background, non è necessario attendere fino al termine prima di poterne eseguire un altro.

nohup fg bg jobs rinnegato terminale