답변:
ls /dev/pts/ | wc -l
위의 명령을 사용하여 열린 터미널 창을 계산하십시오.
그것들을 나열하려면 :
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를 신경 쓰지 않으면 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
grep
과 awk
중복 사용이다 awk '/pattern/
; 이것은 내 컴퓨터에서 작동하지 않습니다. 1 일 때 19를보고합니다.
macos에서는 다음을 사용할 수 있습니다.
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
여기에서 찾을 수 있습니다 : https://stackoverflow.com/a/6180547/6320039
expect
에뮬레이트 된 사용자 세션,xterm
셸을 실행하지 않는 등의 개수가 있습니까?