얼마나 많은 쉘 / 터미널이 실행되고 있는지 계산하는 방법


10

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

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

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


터미널 창에 대한 정의는 무엇입니까 ? 그놈 터미널 탭, 가상 터미널, ssh를 통해 로그인 한 사람, screen / tmux 창, expect에뮬레이트 된 사용자 세션, xterm셸을 실행하지 않는 등의 개수가 있습니까?
Stéphane Chazelas

1
"ctrl-alt-t"로 열린 터미널 창. 나는 누가 "pts"를 grep 할
Martincho

답변:


6
ls /dev/pts/  | wc -l

위의 명령을 사용하여 열린 터미널 창을 계산하십시오.


그것을 시도했다. 그것은 23을 보여줍니다. 그리고 하나의 터미널 / bash 창이 열려 있습니다.
Martincho

@ user68957 여러 사용자가있는 공유 컴퓨터를 사용하고 있습니까?
Chirag Bhatia-chirag64

한 번에 한 명의 가정용 컴퓨터, 한 명의 사용자 트릭은 열려있는 터미널 창 수 또는 터미널 프로세스 수를 계산하는 것입니다. > who를 수행하면 두 명의 사용자가 표시됩니다 .0 yyyy-mm-dd hh-mm (: 0) me pts / 0 yyyy-mm-dd hh-mm (: 0) 다른 터미널 창을 열면 > 누가 표시 : me : 0 yyyy-mm-dd hh-mm (: 0) me pts / 0 yyyy-mm-dd hh-mm (: 0) me pts / 1 yyyy-mm-dd hh-mm (: 0) "pts /"를 grep해야합니까?
Martincho

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를 신경 쓰지 않으면 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

grepawk중복 사용이다 awk '/pattern/; 이것은 내 컴퓨터에서 작동하지 않습니다. 1 일 때 19를보고합니다.
jasonwryan

약간 혼란 스러워요. 지금 우분투 14에 있습니다. 터미널 / bash 창이 하나만 열려 있습니다. abobe 명령을 사용하면 ctrl-alt-t를 사용하여 다른 터미널을 열 경우 23 또는 13을 얻을 수 있습니다.
Martincho

첫 번째 명령은 열린 터미널 세션뿐만 아니라 백그라운드에서 쉘에서 실행되는 하위 프로세스를 계산합니다.
Jeight

@ Jasonwryan-그것은 내 잘 작동합니다. awk와 함께 grep을 사용하는 것이 사람이 선호합니다. 누군가 awk에서 모든 일을하는 것이 더 편하다면 괜찮습니다.
Jeight

"내가 잘 작동한다"는 대답을 거의 입증하지 못할 것입니다. 아마도 "귀하의 것"에 대한 세부 사항을 포함시켜 사람들이 그 시스템에만 적용된다는 것을 사람들이 알 수있을 것입니다.
jasonwryan


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.