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.