ฉันกำลังพยายามนับจำนวนหน้าต่างเชลล์หรือเทอร์มินัลที่กำลังทำงานอยู่
ฉันเหนื่อย ps a|grep bash;
ps a|grep tty;
แต่มันไม่ถูกต้อง
ฉันกำลังพยายามนับจำนวนหน้าต่างเชลล์หรือเทอร์มินัลที่กำลังทำงานอยู่
ฉันเหนื่อย ps a|grep bash;
ps a|grep tty;
แต่มันไม่ถูกต้อง
คำตอบ:
ls /dev/pts/ | wc -l
ใช้คำสั่งด้านบนเพื่อนับหน้าต่างเทอร์มินัลที่เปิด
ในการแสดงรายการ:
ps aux | awk '{print $7}' | grep -v "?"
หากต้องการนับพวกเขา:
ps aux | awk '{print $7}' | grep -v "?" | wc -l
คุณจะต้องลบ 1 จากหมายเลขนั้นเนื่องจากมีส่วนหัว TTY ด้านบน
ทั้งหมดนี้ขึ้นอยู่กับว่าคุณต้องการที่จะนับจำนวนเปลือกย่อยที่กำลังทำงานหรือถ้าคุณต้องการที่จะนับจำนวนหน้าต่างเทอร์มินัลที่เปิดอยู่
หากต้องการนับเฉพาะหน้าต่างเทอร์มินัลคุณจะต้องใช้:
ls /dev/pts/ | wc -l (stated in a previous answer)
ตัวอย่างเช่น:
ในระบบของฉันมีหก tty อยู่ในปัจจุบัน ฉันยังมีหนึ่งเทอร์มินัลเปิด pts / 0 ที่มี 4 กระบวนการทำงานใน fg หรือ 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
หากคุณต้องการนำกระบวนการลูกพื้นหลังออกไปให้ไปที่ uniq:
ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l
คุณยังต้องลบ 1 สำหรับหัวเรื่องส่วนหัวของ TTY แต่คุณสามารถปรับปรุงสิ่งนี้ได้โดยนำ tty ออกไปพร้อม ๆ กันเพราะดูเหมือนว่าคุณไม่สนใจสิ่งเหล่านั้นเลย
ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq
ที่จะให้คุณนับที่ถูกต้อง
แก้ไข
การคิดเกี่ยวกับมันมากขึ้น 'ps -a' จะทำงานได้ดีขึ้นและคุณสามารถละทิ้ง grep แรกได้
ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l
grep
และawk
ซ้ำซ้อนใช้awk '/pattern/
; และนี่ใช้ไม่ได้กับเครื่องของฉัน - รายงานเมื่อฉันมี 1 19
ใน macos คุณสามารถใช้:
cnt=$(w -h | grep "^$(whoami) *s[^ ]* *-"|wc -l)
echo "Your current terminal sessions: $cnt"
พบได้ที่นี่: https://stackoverflow.com/a/6180547/6320039
expect
เซสชันผู้ใช้ที่เลียนแบบ,xterm
ไม่ได้ใช้เชลล์, นับจำนวนหรือไม่?