현재 실행 중인 쉘이나 터미널 창의 수를 세려고 합니다.
나는 노력했다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"
답변4
\l
PS1 변수에 이 옵션을 추가 할 수 있습니다 . 예를 들면 다음과 같습니다.
export PS1="terminal #\l \W \$ "
이렇게 하면 터미널을 처음부터 계산합니다.
자세한 내용은 다음을 참조하세요.GNU 웹사이트.
도움이 되었기를 바랍니다.