GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Perché posso vedere l'output dei processi in background?

Ad esempio, quando digito ping 8.8.8.8 & , perché possiamo vedere il processo di ping funzionante? E quando digito find / -name '*test*' & , si vede anche sul monitor.

Perché? Non è davvero in background?

Migliore risposta

Il & indica alla shell di eseguire il comando in background, ovvero viene eseguito il fork ed eseguito in una sottoshell separata, come lavoro, in modo asincrono.

Nota che quando metti & l'output – sia stdout che stderr – sarà ancora stampato sullo schermo . Se non vuoi vedere alcun output sullo schermo, reindirizza entrambi stdout e stderr in un file da:

myscript > ~/myscript.log 2>&1 &

Di solito potresti voler scartare stderr reindirizzandolo a /dev/null se non sei preoccupato di analizzare gli errori in un secondo momento.

Puoi anche eseguire comandi/script contemporaneamente, in subshell separate. Ad esempio;

./script1 & ./script2 & ./script3 & 

Un lavoro in background può essere riportato alla riga di comando prima che termini con il comando:

fg <job-number>

Il job-number può essere ottenuto eseguendo

jobs

Ubuntu
  1. Perché il Pgid dei processi figlio non è il Pid del genitore?

  2. Perché Grep -o -w non mi dà l'output previsto su Mac Os X?

  3. Dove vanno a finire i codici di escape Ansi quando passo a un altro processo? Posso tenerli?

  4. Non riesco a vedere il pulsante successivo (installazione di Ubuntu su Vmware)?

  5. Perché il cursore salta durante la digitazione?

Come inviare processi in background in Linux

Esegui processi in background in Linux usando il comando Screen

Perché lo sfondo del desktop è nero dopo l'aggiornamento a 13.04?

Perché Shotwell ha le posizioni X e Y invertite quando si utilizza Crop?

Come posso vedere l'attività del mio account di hosting?

Come inviare processi in background su Linux