GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere il Tty in cui è in esecuzione Bash?

Nel secondo metodo proposto da questa pagina, si ottiene la tty in cui viene eseguito bash con il comando:

ps ax | grep $$ | awk '{ print $2 }'

Ho pensato tra me e me che sicuramente questo è un po 'pigro, elencando tutti i processi in esecuzione solo per estrarne uno. Non sarebbe più efficiente (chiedo anche se ciò introdusse effetti indesiderati) da fare:

ps -p $$ | tail -n 1 | awk '{ print $2 }'

Cordiali saluti, mi sono imbattuto in questo problema perché a volte il primo comando produceva effettivamente due (o più) righe. Ciò accadrebbe in modo casuale, quando ci sarebbe un altro processo in esecuzione con un PID che contiene $$ come sottostringa. Nel secondo approccio, evito tali casi richiedendo il PID che so di volere.

Risposta accettata:

Semplicemente digitando tty :

$ tty 
/dev/pts/20

Troppo semplice e ovvio per essere vero 🙂

Modifica: Il primo ti restituisce anche il pty del processo che esegue grep come puoi notare:

$ ps ax | grep $$
28295 pts/20   Ss     0:00 /bin/bash
29786 pts/20   S+     0:00 grep --color=auto 28295

quindi dovresti filtrare grep per ottenere un solo risultato, che sta diventando brutto:

ps ax | grep $$ | grep -v grep | awk '{ print $2 }'

o utilizzando

ps ax | grep "^$$" | awk '{ print $2 }'

(una variante più sana)


Linux
  1. Come ottenere in sicurezza la versione di Ksh?

  2. Linux:come identificare quale distribuzione Linux è in esecuzione??

  3. Linux:come ottenere l'ora dell'orologio da parete di un processo in esecuzione?

  4. Come ottenere a livello di codice la dimensione della pagina della cache della CPU in C++?

  5. Come ottengo la differenza tra due date sotto bash

Come utilizzare il comando di lettura Bash

Come ottenere la dimensione di una directory in Linux

Come utilizzare il comando which in Linux

Come ottengo la directory assoluta di un file in bash?

Come posso *solo* ottenere il numero di byte disponibili su un disco in bash?

Come eseguire il grep di una sezione di un file nella shell bash