実行中のシェル/ターミナルの数を計算するには?

実行中のシェル/ターミナルの数を計算するには?

現在実行中のシェルまたはターミナルウィンドウの数を数えようとしています。

頑張ったps a|grep bash; ps a|grep tty;

しかし、正確ではないかもしれません。

答え1

ls /dev/pts/  | wc -l

上記のコマンドを使用して、開いている端末ウィンドウの数を計算します。

答え2

リストを作成してください。

ps aux | awk '{print $7}' | grep -v "?"

カウントしてください:

ps aux | awk '{print $7}' | grep -v "?" | wc -l

この数字には最上位のTTYヘッダーが含まれているため、この数字から1を引く必要があります。

これは、すべて実行中のサブシェルの数を数えるか、開いている端末ウィンドウの数を数えるかによって異なります。

端末ウィンドウのみを計算するには、以下を使用する必要があります。

ls /dev/pts/ | wc -l (stated in a previous answer)

たとえば、

私のシステムには現在6つのttyを使用できます。また、fgまたはbgで実行される4つのプロセスを持つオープンターミナルpts / 0があります。

root      4565  0.0  0.0   4060   576 tty1     Ss+  May01   0:00 /sbin/mingetty /dev/tty1
root      4567  0.0  0.0   4060   572 tty2     Ss+  May01   0:00 /sbin/mingetty /dev/tty2
root      4569  0.0  0.0   4060   568 tty3     Ss+  May01   0:00 /sbin/mingetty /dev/tty3
root      4571  0.0  0.0   4060   576 tty4     Ss+  May01   0:00 /sbin/mingetty /dev/tty4
root      4573  0.0  0.0   4060   576 tty5     Ss+  May01   0:00 /sbin/mingetty /dev/tty5
root      4575  0.0  0.0   4060   572 tty6     Ss+  May01   0:00 /sbin/mingetty /dev/tty6

me  17482  0.0  0.0 110236  1136      pts/0    R+   11:36   0:00 ps aux
root     20374  0.0  0.0 108336  1816 pts/0    Ss   May23   0:00 -bash
root     20953  0.0  0.1 161436  1960 pts/0    S    May23   0:00 su - me
me  20954  0.0  0.1 108524  1984      pts/0    S    May23   0:00 -bash

バックグラウンドサブプロセスを削除するには、uniqにパイプするだけです。

ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l

それでもTTYヘッダーから1を引く必要がありますが、気にしないように見えるので、ttyを完全に削除してこれをさらに改善することができます。

ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq

これにより正確な数値がわかります。

編集する

より多くの「ps -a」を考慮する方が良いですが、最初のgrepを省略できます。

ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l

答え3

macOSでは、次のものを使用できます。

cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"

ここで見つける:https://stackoverflow.com/a/6180547/6320039

答え4

\lPS1変数にこのオプションを追加できます。たとえば、次のようになります。

export PS1="terminal #\l \W \$ "

これにより、端末を最初から計算します。

詳細については、次を参照してください。GNUウェブサイト

お役に立てば幸いです。

関連情報