Kaç kabuk / terminalin çalıştığını nasıl sayabilirim?


10

Şu anda kaç tane kabuk veya terminal penceresi çalıştığını saymaya çalışıyorum.

denedim ps a|grep bash; ps a|grep tty;

Ancak yanlış olabilir.


Terminal penceresinin tanımı nedir ? Bir gnome-terminal sekmesi, sanal terminal, ssh üzerinden oturum açan kişi, ekran / tmux bölmesi, expecttaklit kullanıcı oturumu, xtermkabuk çalıştırmayan vb. Sayılır mı?
Stéphane Chazelas

1
Terminal penceresi "ctrl-alt-t" ile açıldı. Ben kim "grep" pts "| wc -l
Martincho

Yanıtlar:


6
ls /dev/pts/  | wc -l

Açık olan terminal pencerelerini saymak için yukarıdaki komutu kullanın.


Bunu denedim. 23 gösteriyor. Ve sadece bir terminal / bash pencerem açık.
Martincho

@ user68957 Şans eseri birden çok kullanıcıyla paylaşılan bir bilgisayarda mısınız?
Chirag Bhatia - chirag64

Bir ev bilgisayarı, bir seferde bir kullanıcı. İşin püf noktası kaç terminal penceresinin açık olduğunu veya terminal işlemlerini saymak olacaktır. Bir> kim yaparsam, iki kullanıcıyı beni listeler: 0 yyyy-aa-gg ss-dd (: 0) me pts / 0 yyyy-aa-gg ss-dd (: 0) Başka bir terminal penceresi açarsam > kim gösterir: ben: 0 yyyy-aa-gg ss-dd (: 0) bana puan / 0 yyyy-aa-gg ss-dd (: 0) ben p / 1 yyyy-aa-gg ss-dd (: 0) Ben sadece "pts /" grep mi?
Martincho

2

Bunları listelemek için:

ps aux | awk '{print $7}' | grep -v "?"

Onları saymak için:

ps aux | awk '{print $7}' | grep -v "?" | wc -l

Üst TTY başlığını içerdiği için bu sayıdan 1 çıkarmanız gerekir.

Bu, kaç tane alt kabuğun çalıştığını saymak veya kaç tane terminal penceresinin açık olduğunu saymak isteyip istemediğinize bağlıdır.

Sadece terminal pencerelerini saymak için kullanmanız gerekir:

ls /dev/pts/ | wc -l (stated in a previous answer)

Örneğin:

Sistemimde şu anda altı adet tty mevcut. Ayrıca fg veya bg çalışan 4 işlem olan bir terminal açık pts / 0 var.

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

Eğer arka plan alt süreçlerini almak istiyorsanız, o zaman sadece uniqiye boru atın:

ps aux | awk '{print $7}' | grep -v "?" | uniq | wc -l

TTY'nin başlık başlığı için hala 1 çıkarmanız gerekiyor, ancak yine de umursamadığınız gibi, tty'leri tamamen dışarı çıkararak bunu daha da geliştirebilirsiniz.

ps aux | awk '{print $7}' | grep -v "?" | grep -vi "tty*" | uniq

Bu size doğru bir sayı verecektir.

DÜZENLE

Daha fazla 'ps -a' düşünmek daha iyi çalışır ve ilk grep'i dışarıda bırakabilirsiniz.

ps a | awk '{print $2}' | grep -vi "tty*" | uniq | wc -l

grepve awkgereksizdir, kullanın awk '/pattern/; ve bu benim makinemde çalışmıyor - 1 olduğunda 19 rapor ediyor.
jasonwryan

Biraz kafam karıştı. Şu anda Ubuntu 14'teyim. Sadece bir terminal / bash penceresi açık. Abobe komutlarıyla, ctrl-alt-t ile başka bir terminal açmam durumunda 1 veya 2 almam gerektiğinde 23 veya 13 alıyorum
Martincho

Bu ilk komut, yalnızca açık terminal oturumlarını değil, aynı zamanda kabuklarda çalışan çocuk süreçlerini sayar
Jeight

@jasonwryan - Benimki için iyi çalışıyor. Grep'i awk ile kullanmak kişi tercihidir. Birisi awk içinde her şeyi yapmak daha rahatsa o zaman sorun değil.
Jeight

"Benimki üzerinde gayet iyi çalışıyor" cevabınızı pek doğrulamaz ... Belki de "sizinkinin" ne olduğuna dair bazı ayrıntılar ekleyebilirsiniz, böylece insanlar sadece bu sistem için geçerli olduğunun farkındadır.
jasonwryan


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.