Próbuję policzyć, ile okien powłoki lub terminala jest aktualnie uruchomionych.
próbowałem ps a|grep bash;
ps a|grep tty;
Ale może być niedokładne.
Próbuję policzyć, ile okien powłoki lub terminala jest aktualnie uruchomionych.
próbowałem ps a|grep bash;
ps a|grep tty;
Ale może być niedokładne.
Odpowiedzi:
ls /dev/pts/ | wc -l
Użyj powyższego polecenia, aby policzyć otwarte okna terminala.
Aby je wymienić:
ps aux | awk '{print $7}' | grep -v "?"
Aby je policzyć:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
Musisz odjąć 1 od tego numeru, ponieważ zawiera on górny nagłówek TTY.
Wszystko zależy od tego, czy chcesz policzyć, ile jest uruchomionych podpowłok lub czy chcesz policzyć, ile okien terminala jest otwartych.
Aby policzyć tylko okna terminali, musisz użyć:
ls /dev/pts/ | wc -l (stated in a previous answer)
Na przykład:
W moim systemie dostępnych jest obecnie sześć tty. Mam również jeden terminal otwarty pts / 0, który ma 4 procesy uruchomione w fg lub bg.
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
Jeśli chcesz usunąć procesy potomne w tle, po prostu potokuj do uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Nadal musisz odjąć 1 dla tytułu nagłówka TTY, ale możesz to jeszcze poprawić, usuwając tty całkowicie, ponieważ wygląda na to, że i tak nie przejmujesz się tym.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
To da ci dokładne obliczenie.
EDYTOWAĆ
Myślenie o tym bardziej „ps -a” działałoby lepiej i możesz pominąć pierwsze grep.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
i awk
jest zbędny, użyj awk '/pattern/
; i to nie działa na moim komputerze - zgłasza 19, gdy mam 1.
Na komputerach Mac możesz użyć:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Znalezione tutaj: https://stackoverflow.com/a/6180547/6320039
expect
emulowana sesja użytkownika,xterm
brak uruchomionej powłoki itp.?