GNU/Linux >> Linux の 問題 >  >> Linux

Bashが実行されているTtyを取得する方法は?

このページで提案されている2番目の方法では、次のコマンドを使用してbashが実行されているttyを取得します。

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

確かにこれは少し怠惰であり、実行中のすべてのプロセスをリストして、そのうちの1つを抽出するだけだと私は思います。行うのがより効率的ではないでしょうか(これが望ましくない効果をもたらすかどうかも尋ねています):

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

参考までに、最初のコマンドで実際に2行(またはそれ以上)の行が生成されることがあるため、この問題に遭遇しました。 $$を含むPIDで実行されている別のプロセスがある場合、これはランダムに発生します。 部分文字列として。 2番目のアプローチでは、必要なことがわかっているPIDを要求することで、このようなケースを回避しています。

承認された回答:

ttyと入力するだけです :

$ tty 
/dev/pts/20

単純すぎて明白であるとは言えません🙂

編集: 最初のものは、ptyも返します grepを実行しているプロセスの お気づきのとおり:

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

したがって、grepを除外して、醜い結果を1つだけ取得する必要があります。

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

または使用

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

(より健全なバリアント)


Linux
  1. C++でCPUキャッシュページサイズをプログラムで取得する方法は?

  2. bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

  3. bash でディスク上で利用可能なバイト数のみを取得するにはどうすればよいですか?

  1. ssh-agent が既に bash で実行されているかどうかを確認するには?

  2. bashで文字列から最後の数字を取得するにはどうすればよいですか?

  3. bashからネットマスクを取得するには?

  1. Linuxgrepコマンドの使用方法

  2. Kshのバージョンを安全に入手する方法は?

  3. 実行中のプロセスのウォールクロック時間を取得するにはどうすればよいですか?