GNU/Linux >> Znalost Linux >  >> Linux

Jak získat Tty ve kterém Bash běží?

Ve druhé metodě navrhované touto stránkou se dostane tty, ve kterém se bash spouští, pomocí příkazu:

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

Myslel jsem si, že je to jistě trochu líné, vypisovat všechny běžící procesy, abych extrahoval jeden z nich. Nebylo by efektivnější (také se ptám, zda by to přineslo nežádoucí efekty) udělat:

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

FYI, narazil jsem na tento problém, protože někdy první příkaz skutečně poskytl dva (nebo více) řádků. To by se stalo náhodně, když by běžel jiný proces s PID, který obsahuje $$ jako podřetězec. Ve druhém přístupu se takovým případům vyhýbám tím, že si vyžádám PID, o kterém vím, že ho chci.

Přijatá odpověď:

Jednoduše zadáním tty :

$ tty 
/dev/pts/20

Příliš jednoduché a zřejmé, aby to byla pravda 🙂

Upravit: První z nich vám vrátí také pty procesu běžícího grep jak si můžete všimnout:

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

proto byste museli odfiltrovat grep, abyste získali pouze jeden výsledek, který začíná být ošklivý:

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

nebo pomocí

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

(rozumnější varianta)


Linux
  1. Jak používat Linuxový příkaz grep

  2. Jak bezpečně získat verzi Ksh?

  3. Jak zobrazit výstup běžícího procesu v jiné relaci Bash?

  1. Jak zjistím rozdíl mezi dvěma daty pod bash

  2. Jak získat stav ukončení smyčky v bash

  3. Jak mohu *pouze* získat počet bajtů dostupných na disku v bash?

  1. Linux – Jak zjistit, která Linuxová distribuce běží?

  2. Linux – jak získat čas nástěnných hodin běžícího procesu?

  3. Jak mohu získat čas nástěnných hodin běžícího procesu?