środa, 14 września 2011

CentOS - wykonanie polecenia w tle

Aby wykonać polecenie w tle można użyć narzędzia screen lub nohup.

Polecenie nohup spowoduje, że zadanie będzie wykonywane w tle a użytkownik może w tym czasie pracować na konsoli.

#nohup iostat -d-x 5 30 &
Opcje:
użycie znaku & na końcu powoduje iż proces przechodzi do drugiego planu.

Innym znacznie bardziej rozbudowanym narzędziem jest screen.
Screen pozwala na otwarcie wielu sesji w terminalu (przydatne zwłaszcza w pracy zdalnej).

#screen -S nazwa
Powyższe polecenie utworzy nową sesję o nazwie nazwa.

Aby sprawdzić listę otwartych sesji

#screen -list

Aby przywrócić zawieszoną sesję

#screen -r nazwa

Przydatne skróty klawiaturowe
Ctrl+a c : nowe okno
Ctrl+a n : przejście do następnego otwartego okna
Ctrl+a p : przejście do poprzedniego otwartego okna
Ctrl+a " : wybór okna z listy
Ctrl+a Ctrl+a : poprzedni widok

Ctrl+a S : dzieli ekran horyzontalnie
Ctrl+a tab : przechodzi do danego obszaru, można na nim utworzyć nowe okno
Ctrl+a d : detatch okna
Ctrl+a A : ustawia tytuł okna
Ctrl+a x : blokuje sesje, należy podać hasło aby odblokować

CentOS - monitorowanie użycia CPU

Podstawowe narzędzia do sprawdzania obciążenia procesora.
Narzędzie top. Proste w użyciu pokazuje podstawowe informacje o procesach, zajętości procesora i pamięci.

#top

Inne znacznie ciekawsze narzędzie to mpstat

#mpstat -P ALL
Powyższe polecenie pokaże informacje o każdym procesorze z osobna, jak i sumarycznie wszystkie.

Innym przydatnym narzędziem jest sar. Pozwala na generowanie raportów minutowych.

#sar -u 2 5
Opcje:
-u 2 5 : pokaże 5 raportów generowanych co 2 sekundy

Opis wartości:
%user : czas procesora spędzony na wykonywaniu zadań użytkownika (aplikacje)
%nice : jak wyżej ale zlicza czas procesora wykorzystany przez procesy z niższym priorytetem
%system : czas procesora wykorzystany na zadnia systemowe (kernel)
%iowait : procent czasu procesora w którym był bezczynny oczekując na urządzenia I/O
%idle : procent czasu procesora w którym nic nie robił

Przydatną opcją jest wykorzystanie narzędzia sar razem z nohup aby równolegle przez pewien okres czasu sprawdzał obciążenie procesora

#nohup sar -u 60 30 &
Wykona 30 raportów co 60 sekund i zapisze wynik do pliku nohup.out

Aby odnaleźć procesy zajmujące największą ilość czasu procesora można posłużyć się poleceniem ps

#ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
#ps -eo pcpu,pid,user,args | sort -r -k1 | less
Powyższe polecenie pokaże 10 procesów, które zajmują największą ilość czasu procesora.

Inne przydatne polecenie, również pomocne w sprawdzeniu zajętości CPU to iostat

CentOS - jak sprawdzić obciążenie dysku

Z pomocą przychodzi nam narzędzie iostat

#iostat -d -x 5 3
Opcje:
-d : oznacza dysk
-x : rozszerzone statystyki
5 : interval co ile powtarzać odczyt statystyk
3 : ilość sprawdzeń

Interpretacja wyników:

rrqm/s : liczba połączonych ("merged") żądań odczytu. Połączonych oznacza wiele logicznych zapytań wykonywanych przez system w celu wykonania żądania połączonych w jedno.
wrqm/s : liczba połączonych ("merged") żądań zapisu. Połączonych oznacza wiele logicznych zapytań wykonywanych przez system w celu wykonania żądania połączonych w jedno.
r/s : ilość odczytanych żądań na sekundę
w/s : ilość zapisanych żądań na sekundę
rsec/s : ilość odczytanych sektorów na sekundę
wsec/s : ilość zapisanych sektorów na sekundę
avgrq-sz : średnia wielkość żądania w sektorze
avgqu-sz : średnia ilość żądań oczekujących w kolejce na urządzenie.
await : średni czas (w milisekundach) odpowiedzi I/O. Zawiera zarówno czas odpowiedzi jak i wykonania (queue time and service time). Wysoka wartość tego atrybutu często może oznaczać oczekiwanie na odczyt z uwagi na to, iż zapis często jest buforowany w przeciwieństwie do odczytu.
svctm : czas w milisekundach obsługi żądania. Zarówno czas oczekiwania jak i czas wykonania żądania.
%util : procentowe zużycie procesowa do wykonania obsługi żądania. Wysoka wartość oznacza wąskie gardło dla systemu I/O.

Podpowiedź jak interpretować wyniki. Trzy najważniejsze pola raportu mogące świadczyć o tym, iż system I/O jest wąskim gardłem systemu:

1. Wysoka wartość parametru svctm
2. Wysoka wartość %util
3. Wysokie wskaźniki r/s i w/s

wtorek, 13 września 2011

CentOS - jak sprawdzić stan usług

Aby zweryfikować jakie usługi są w systemie uruchomione należy użyć polecenia service.

#service --status-all
#service --status-all | grep httpd
#service httpd status
Opcje:
--status-all : pokazuje aktualny status wszystkich usług w systemie

Aby włączyć lub wyłączyć automatyczne uruchamianie danej usługi należy użyć narzędzia chkconfig wykonać polecenie


#chkconfig --add nazwa
#chkconfig --del nazwa
#chkconfig --level 035 nazwa on|off

Aby wylistować wszystkie usługi należy wykonać polecenie

#chkconfig --list

Skrypt uruchamiający daną usługę musi zawierać odpowiednie linie zakomentowane, jest to bardzo istotne w przeciwnym wypadku użytkownik otrzyma komunikat, że skrypt nie jest wspierany przez narzędzie chkconfig.

# chkconfig: 2345 20 80
# description: Komentarz do skryptu \
# dalsza część komentarza
Opis:
Wpis 2345 oznacza poziomy uruchamiania. 20 i 80 oznaczają kolejność startu 20 i zatrzymania 80

poniedziałek, 12 września 2011

CentOS - jak sprawdzć na których portach nasłuchują usługi

Aby wyświetlić serwisy i porty na których one nasłuchują można wykorzystać program netstat.

#netstat --tcp --udp --listening --programs

Opcje:
-t --tcp : informuje aby sprawdzał protokół TCP
-u --udp : informuje aby sprawdzał protokół UDP
-l --listening : pokazuje tylko nasłuchujące połączenia (domyślnie tylko established)
-a --all : pokazuje wszystkie połączenia
-p --programs : pokazuje nazwę usługi zamiast numeru portu
-n --numeric : pokazuje numer portu zamiast nazwy usługi

Innym sposobem może być przeskanowanie portów celem sprawdzenia, które są otwarte i jakie usługi na nich nasłuchują. Można wykorzystać do tego narzędzie nmap.

#nmap -T Aggresive -A -v 127.0.0.1 -p 1-6000
Opcje:
-A : włącza detekcję OS i wersji usług
-p : oznacza porty do skanowania (można podać zakres 1-100, lub 100-, lub 22)
-T : oznacza poziom szczegołowości (1-5), nim wyższy tym szybsze skanowanie
-v : adres IP, nazwa hosta lub sieć

Jeszcze inny sposób na osiągnięcie powyższego celu to wykorzystanie programu lsof

#lsof +m -i4
#lsof -i TCP:80
#lsof -i :22
#lsof -i :22-100

Opcje:
-i[46] : określa IPv4 lub IPv6

Jeszcze inny sposób na sprawdzenie portu polega na wykorzystaniu narzędzia fuser. Wynik pokaże na jakim użytkowniku uruchomiona jest usługa, jej PID oraz polecenie które je uruchomiło.

#fuser -v 80/tcp
Opcje:
-v : verboe output