Estoy tratando de contar cuántas ventanas de shell o terminal se están ejecutando actualmente.
Lo intenté ps a|grep bash;
ps a|grep tty;
Pero puede ser inexacto.
Estoy tratando de contar cuántas ventanas de shell o terminal se están ejecutando actualmente.
Lo intenté ps a|grep bash;
ps a|grep tty;
Pero puede ser inexacto.
Respuestas:
ls /dev/pts/ | wc -l
Use el comando anterior para contar las ventanas de terminal abiertas.
Para enumerarlos:
ps aux | awk '{print $7}' | grep -v "?"
Para contarlos:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
Deberá restar 1 de ese número, ya que incluye el encabezado TTY superior.
Todo esto depende si desea contar cuántos sub shells se están ejecutando o si desea contar cuántas ventanas de terminal están abiertas.
Para contar solo las ventanas de terminal que necesitaría usar:
ls /dev/pts/ | wc -l (stated in a previous answer)
Por ejemplo:
En mi sistema actualmente hay seis tty's disponibles. También tengo un terminal abierto pts / 0 que tiene 4 procesos ejecutándose en fg o 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
Si desea eliminar los procesos secundarios en segundo plano, simplemente canalice a uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Todavía tiene que restar 1 para el título del encabezado de TTY, pero puede mejorar aún más si elimina los tty por completo, ya que parece que de todos modos no le importan.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Eso te dará un conteo exacto.
EDITAR
Pensando en ello más 'ps -a' funcionaría mejor y puede omitir el primer grep.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
y awk
es redundante, uso awk '/pattern/
; y esto no funciona en mi máquina - informa 19 cuando tengo 1.
En macos puedes usar:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Encontrado aquí: /programming//a/6180547/6320039
expect
una sesión de usuario emulada, quexterm
no ejecuta un shell, etc.?