Skrypt bash zliczanie procesów unix

Skrypt bash zliczanie procesów unix
  • Rejestracja: dni
  • Ostatnio: dni
0

otóż napisalem taki skrypt:

Kopiuj
#!/bin/bash
for user in `ps -Af | tr -s ' ' | cut -f1 -d' ' | sort | uniq | grep -v UID`; do
        echo -e "$user":
        i=1
        for process in `ps -fu "$user" | tr -s ' ' | cut -f8 -d' ' | grep -v CMD`; do
                echo "$i". "$process"
                i=$((i+1))
        done
        echo 
done 

Chciałbym teraz, żeby zamiast wypisywać wszystkie procesy userów wypisywać tylko top5 procesów z największą liczbą odpalonych instancji? Ma ktoś jakiś pomysł?

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

pełna odpowiedź to nie będzie, ale za bardzo kombinujesz. zobacz co daje:

Kopiuj
ps -A -o user,comm --sort user,comm

oraz

Kopiuj
ps -A -o user,comm --sort user,comm | uniq -c
  • Rejestracja: dni
  • Ostatnio: dni
0
Azarien napisał(a)

pełna odpowiedź to nie będzie, ale za bardzo kombinujesz. zobacz co daje:

ps -A -o user,comm --sort user,commoraz
ps -A -o user,comm --sort user,comm | uniq -c

Może kombinuję za bardzo, ale nie wiem jak to łatwiej zrobić. Za zadanie mam wypisanie wszystkich userów z aktywnym przynajmniej 1 procesem a następnie zsumować powtarzające się procesy i wypisać 5 które mają najwięcej instancji.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

wypisanie wszystkich userów z aktywnym przynajmniej 1 procesem

Kopiuj
ps -A h -o user --sort user|uniq

wypisać 5 które mają najwięcej instancji

user image

  • Rejestracja: dni
  • Ostatnio: dni
0

Jestem początkujący w bashu:

Kopiuj
ps: illegal option -- -
ps: ort is an invalid non-numeric argument for -s option
  • Rejestracja: dni
  • Ostatnio: dni
0
Azarien napisał(a)

wypisanie wszystkich userów z aktywnym przynajmniej 1 procesem

ps -A h -o user --sort user|uniq

wypisać 5 które mają najwięcej instancji

user image</quote>
Dla każdego usera mam oddzielnie sumować procesy, ale bardzo mi już pomogłeś. Dziękuję

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Jestem początkujący w bashu:
ja też. ale znam takie fajne polecenie: man ;-)

  • Rejestracja: dni
  • Ostatnio: dni
0
Azarien napisał(a)

Jestem początkujący w bashu:
ja też. ale znam takie fajne polecenie: man ;-)

Tyle, że ja dopiero dziś zacząłem to rozkminiać, bo zadanie do 13.30 muszę wysłać prowadzącemu:P

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#!/bin/bash
for user in `ps -A -o ruser | tail -n +2 | sort | uniq` ; do
	echo -e "$user":
	ps -u "$user" -o command | tail -n +2 | cut -f1 -d ' ' | sort | uniq -c | sort -rg | head -5
	echo
done

ps -o ruser pokaż tylko nazwy userów
ps -o command pokaż tylko komendę
tail -n +2 omiń pierwszą linię
cut -f1 -d ' ' bierzemy samą komendę (to co przed spacją), bez parametrów wywołania (nienajlepszy sposób, zakłada brak spacji w nazwie komendy)
uniq -c wypisz liczbę powtórzeń przy każdej linii
sort -rg odwrócona kolejność sortowania (r), sortowanie numeryczne (g)
head -5 pierwsze 5 linijek

  • Rejestracja: dni
  • Ostatnio: dni
0
adf88 napisał(a)
Kopiuj
#!/bin/bash
for user in `ps -A -o ruser | tail -n +2 | sort | uniq` ; do
	echo -e "$user":
	ps -u "$user" -o command | tail -n +2 | cut -f1 -d ' ' | sort | uniq -c | sort -r | head -5
	echo
done

ps -o ruser pokaż tylko nazwy userów
ps -o command pokaż tylko komendę
tail -n +2 omiń pierwszą linię
cut -f1 -d ' ' bierzemy samą komendę (to co przed spacją), bez parametrów wywołania
uniq -c wypisz liczbę powtórzeń przy każdym elemencie
sort -r odwrócona kolejność sortowania
head -5 pierwsze 5 linijek

usage: tail [+/-[n][lbc][f]] [file]
tail [+/-[n][l][r|f]] [file]

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

spróbuj dać tail -n+2 zamiast tail -n +2

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

jak się doda parametr h (bez minusa) do ps, to nie trzeba będzie omijać nagłówka.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.