Saya mencoba menghitung berapa banyak shell atau terminal windows yang sedang berjalan.
Saya mencoba ps a|grep bash;
ps a|grep tty;
Tapi itu bisa tidak akurat.
Saya mencoba menghitung berapa banyak shell atau terminal windows yang sedang berjalan.
Saya mencoba ps a|grep bash;
ps a|grep tty;
Tapi itu bisa tidak akurat.
Jawaban:
ls /dev/pts/ | wc -l
Gunakan perintah di atas untuk menghitung jendela terminal terbuka.
Untuk daftar mereka:
ps aux | awk '{print $7}' | grep -v "?"
Untuk menghitungnya:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
Anda harus mengurangi 1 dari angka itu karena termasuk tajuk TTY atas.
Ini semua tergantung apakah Anda ingin menghitung berapa banyak shell yang berjalan atau jika Anda ingin menghitung berapa banyak jendela terminal yang terbuka.
Untuk menghitung hanya terminal windows Anda perlu menggunakan:
ls /dev/pts/ | wc -l (stated in a previous answer)
Sebagai contoh:
Di sistem saya saat ini tersedia enam tty. Saya juga memiliki satu terminal buka pts / 0 yang memiliki 4 proses yang berjalan di fg atau 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
Jika Anda ingin menghapus proses latar belakang anak kemudian hanya pipa ke uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Anda masih harus mengurangi 1 untuk judul tajuk TTY, tetapi Anda dapat lebih meningkatkan ini dengan mengeluarkan tty sama sekali karena tampaknya Anda tidak peduli dengan mereka.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Itu akan memberi Anda hitungan yang akurat.
EDIT
Memikirkannya lebih 'ps -a' akan bekerja lebih baik dan Anda dapat mengabaikan grep pertama.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
dan awk
berlebihan, gunakan awk '/pattern/
; dan ini tidak bekerja pada mesin saya - itu melaporkan 19 ketika saya memiliki 1.
Di Macos Anda dapat menggunakan:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Ditemukan di sini: https://stackoverflow.com/a/6180547/6320039
expect
sesi pengguna ditiru,xterm
tidak menjalankan shell, dll menghitung?