실행 중인 쉘/터미널 수를 계산하는 방법은 무엇입니까?

실행 중인 쉘/터미널 수를 계산하는 방법은 무엇입니까?

현재 실행 중인 쉘이나 터미널 창의 수를 세려고 합니다.

나는 노력했다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 웹사이트.

도움이 되었기를 바랍니다.

관련 정보