Bagaimana cara menghitung berapa banyak shell / terminal berjalan?

10

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.

Martincho
sumber
Apa definisi Anda tentang jendela terminal ? Apakah tab gnome-terminal, terminal virtual, orang yang masuk lebih dari ssh, layar / panel tmux, expectsesi pengguna ditiru, xtermtidak menjalankan shell, dll menghitung?
Stéphane Chazelas
1
Jendela terminal dibuka dengan "ctrl-alt-t". Saya menyelesaikannya dengan menghitung berapa "pts" yang ada dalam perintah siapa | grep "pts" | wc -l
Martincho

Jawaban:

6
ls /dev/pts/  | wc -l

Gunakan perintah di atas untuk menghitung jendela terminal terbuka.

Ramesh
sumber
Sudah mencobanya. Ini menunjukkan 23. Dan saya hanya memiliki satu terminal / jendela bash terbuka.
Martincho
@ user68957 Apakah Anda menggunakan komputer bersama dengan banyak pengguna?
Chirag Bhatia - chirag64
Satu komputer rumah, satu pengguna pada saat itu. Caranya adalah dengan menghitung berapa banyak terminal windows yang terbuka, atau terminal proses. Jika saya melakukan> siapa, daftar dua pengguna saya: 0 yyyy-mm-dd hh-mm (: 0) saya poin / 0 yyyy-mm-dd hh-mm (: 0) Jika saya membuka jendela terminal lain, dengan > siapa yang menunjukkan: saya: 0 yyyy-mm-dd hh-mm (: 0) saya poin / 0 yyyy-mm-dd hh-mm (: 0) saya poin / 1 yyyy-mm-dd hh-mm (: 0) Haruskah saya hanya grep "Poin"?
Martincho
2

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
Jeight
sumber
grepdan awkberlebihan, gunakan awk '/pattern/; dan ini tidak bekerja pada mesin saya - itu melaporkan 19 ketika saya memiliki 1.
jasonwryan
Saya sedikit bingung. Saat ini, saya di Ubuntu 14. Hanya ada satu terminal / jendela bash terbuka. Dengan perintah abobe, saya mendapatkan 23 atau 13, ketika saya harus mendapatkan 1, atau 2 jika saya membuka terminal lain dengan ctrl-alt-t
Martincho
Perintah pertama itu menghitung proses anak yang berjalan di shell di latar belakang dan tidak hanya sesi terminal terbuka
Jeight
@jasonwryan - Ini berfungsi dengan baik pada milikku. Menggunakan grep dengan awk adalah preferensi orang. Jika seseorang lebih nyaman melakukan semuanya dengan awk maka itu tidak masalah.
Jeight
"Itu bekerja dengan baik pada saya" hampir tidak membuktikan jawaban Anda ... Mungkin Anda bisa memasukkan beberapa detail dari apa "milikmu" sehingga orang sadar bahwa itu hanya berlaku untuk sistem itu.
jasonwryan
-1

Anda bisa melakukannya $ pgrep bash

masukkan deskripsi gambar di sini

Anda juga bisa melakukannya $ W

masukkan deskripsi gambar di sini

Noajm IsMy Name
sumber