GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir le Tty dans lequel Bash est en cours d'exécution ?

Dans la deuxième méthode proposée par cette page, on récupère le tty dans lequel bash est exécuté avec la commande :

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

Je me suis dit que c'était sûrement un peu paresseux, répertoriant tous les processus en cours d'exécution uniquement pour en extraire l'un d'eux. Ne serait-il pas plus efficace (je demande aussi si cela introduirait des effets indésirables) de faire :

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

Pour votre information, je suis tombé sur ce problème car parfois la première commande produisait en fait deux lignes (ou plus). Cela se produirait de manière aléatoire, lorsqu'il y aurait un autre processus en cours d'exécution avec un PID contenant $$ comme sous-chaîne. Dans la deuxième approche, j'évite de tels cas en demandant le PID que je sais que je veux.

Réponse acceptée :

En tapant simplement tty :

$ tty 
/dev/pts/20

Trop simple et évident pour être vrai 🙂

Modifier : Le premier vous renvoie également le pty du processus exécutant grep comme vous pouvez le remarquer :

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

par conséquent, vous devrez filtrer le grep pour obtenir un seul résultat, qui devient moche :

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

ou en utilisant

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

(une variante plus sensée)


Linux
  1. Comment obtenir en toute sécurité la version de Ksh ?

  2. Comment afficher la sortie d'un processus en cours d'exécution dans une autre session Bash ?

  3. Comment puis-je obtenir la différence entre deux dates sous bash

  4. Comment obtenir le répertoire absolu d'un fichier dans bash ?

  5. Comment puis-je obtenir le dossier temporaire d'une machine exécutant maven?

Comment utiliser la commande de lecture Bash

Comment obtenir la taille d'un répertoire sous Linux

Linux - Comment identifier quelle distribution Linux est en cours d'exécution ??

Linux - Comment obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?

Comment utiliser la commande which sous Linux

Comment puis-je obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?