얼마나 많은 쉘 / 터미널이 실행되고 있는지 계산하는 방법 터미널 창 수를 세려고합니다. 나는 시도했다 ps a|grep

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

나는 시도했다 ps a|grep bash; ps a|grep tty;

그러나 부정확 할 수 있습니다.



답변

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

답변

macos에서는 다음을 사용할 수 있습니다.

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

여기에서 찾을 수 있습니다 : https://stackoverflow.com/a/6180547/6320039


답변

넌 할 수있어 $ pgrep bash

또한 할 수 있습니다 $ W