2番目のアプローチで提案されているこのページ、次のコマンドを使用してbashを実行するttyを取得できます。
ps ax | grep $$ | awk '{ print $2 }'
私は自分で考えましたが、これは実際に少し怠惰です。実行中のプロセスの1つを抽出するためにすべての実行プロセスを一覧表示します。これを行う方が効率的ではありませんか? (これが望ましくない影響を与える可能性があるかどうか尋ねたい):
ps -p $$ | tail -n 1 | awk '{ print $2 }'
参考までに、この問題は、最初のコマンドが実際に2つ(またはそれ以上)行を生成するために発生しました。$$
これは、他のプロセスが実行されていてそのPIDに部分文字列が含まれている場合にランダムに発生します。 2番目のアプローチでは、私が望むPIDを要求してこれを防ぎます。
ベストアンサー1
以下を入力してください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
したがって、1つの結果のみを取得するにはgrepをフィルタリングする必要がありますが、これは見苦しくなります。
ps ax | grep $$ | grep -v grep | awk '{ print $2 }'
または使用
ps ax | grep "^$$" | awk '{ print $2 }'
(制精神変種)