Tôi đang cố gắng đếm xem có bao nhiêu cửa sổ vỏ hoặc thiết bị đầu cuối hiện đang chạy.
Tôi đã thử ps a|grep bash;
ps a|grep tty;
Nhưng nó có thể không chính xác.
Tôi đang cố gắng đếm xem có bao nhiêu cửa sổ vỏ hoặc thiết bị đầu cuối hiện đang chạy.
Tôi đã thử ps a|grep bash;
ps a|grep tty;
Nhưng nó có thể không chính xác.
Câu trả lời:
ls /dev/pts/ | wc -l
Sử dụng lệnh trên để đếm các cửa sổ đầu cuối mở.
Để liệt kê chúng:
ps aux | awk '{print $7}' | grep -v "?"
Để đếm chúng:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
Bạn sẽ cần phải trừ 1 từ số đó vì nó bao gồm tiêu đề TTY hàng đầu.
Tất cả điều này phụ thuộc vào việc bạn muốn đếm xem có bao nhiêu shell phụ đang chạy hoặc nếu bạn muốn đếm xem có bao nhiêu cửa sổ đầu cuối đang mở.
Để chỉ đếm các cửa sổ đầu cuối, bạn sẽ cần sử dụng:
ls /dev/pts/ | wc -l (stated in a previous answer)
Ví dụ:
Trên hệ thống của tôi hiện có sáu tty có sẵn. Tôi cũng có một thiết bị đầu cuối mở pts / 0 có 4 tiến trình đang chạy trong fg hoặc 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
Nếu bạn muốn lấy đi các tiến trình con nền thì chỉ cần chuyển sang uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
Bạn vẫn phải trừ 1 cho tiêu đề TTY, nhưng bạn có thể cải thiện điều này hơn nữa bằng cách loại bỏ hoàn toàn tty vì nó xuất hiện mà bạn không quan tâm đến những cách đó.
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
Điều đó sẽ cung cấp cho bạn một số lượng chính xác.
BIÊN TẬP
Suy nghĩ về nó nhiều hơn 'ps -a' sẽ hoạt động tốt hơn và bạn có thể bỏ qua grep đầu tiên.
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
và awk
là dư thừa, sử dụng awk '/pattern/
; và điều này không hoạt động trên máy của tôi - nó báo cáo 19 khi tôi có 1.
Trên macos bạn có thể sử dụng:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
Tìm thấy ở đây: /programming//a/6180547/6320039
expect
phiên người dùng mô phỏng,xterm
không chạy shell, v.v.?