Monitorowanie systemu operacyjnego Linux — niezbędnik admina (z moich notatek)

Praca z shell

Kiedy bootujemy SO Linux, jesteśmy zazwyczaj kierowani do GUI, który prowadzi nas przez prcoes logowania i idzie za interakciami z SO. Chociaż GUI stał się bardzo ważny i dobry na użytkownika, używanie jego nie jest jedynym sposobem komunikowania się z naszym SO. Można też użyć tekstowej komunikacji jak interpretator wiersza polecenia zwany zazwyczaj shell, gdzie można wprowadzać polecenia. Ponieważ Linux dostarcza opcji dla startowania okien shell z GUI, można łatwo użyć obu metod.

W administracji aplikacje oparte na shell są zwłaszcza ważne dla kontrolowania komputerów przez wolne linki sieciowe lub jeśli chcemy wykonywać zadania jako root w wierszu polecenia. Dla Linuxa “newbies” to mogłoby być raczej nietypowe, aby wprowadzać polecenia w shell, ale shell nie jest tylko dla administratorów. Użycie shell jest często najszybszym i najłatwiejszym sposobem, aby wykonać pewne szczegołowe zadania. Jest klika shell dla UNIX lub Linux. Domyślnym shell dla SLES jest Bash (GNU Bourne-Again Shell).

Kilka podstaw, które trzeba wiedzieć dla shell:

– jak wprowadzać polecenia

– struktura katalogowa Linux

– jak pracować z plikami i katalogami

– jak używać podstawowych funkcji

– pojęcie użytkownika i praw dostepu w Linux

– wprowadzenie do edytora vi

Startowanie Bash Shell

W Linux można używać równocześnie wiersza polecenia i GUI i łatwo przełączać między nimi. Zachęta w wierszu polecenia pokazuje zazwyczaj: nasz login (tomza), nazwę hosta naszego komputera (knox) i bieżącą ściezkę (np. katalog home wskazny przez symbol tyldy ~).

tomza@knox:~>

Kiedy jesteśmy zalogowani na zdalnym komputerze ta informacja zawsze wskazuje nam, na jakim SO bieżąco pracujemy.

Wprowadzanie poleceń

Polecenie składa się z kilku elementów. Pierwszym jest bieżące polecenie a za nim parametry lub opcje. Można wprowadzić polecenie i je edytowac przez użycie ← , → , <— , Del i Space . Można też dodać opcje lub poprawiać błędy przy wpisywaniu.

Ważne:

Shell nie jest rozmowny, bo w przeciwieństwie do GUI to zazwyczaj nie dostarcza potwierdzenai wiadomości, kiedy polecenia zostały wykonane. Wiadomości pojawiają się przy błędach i problemach.

Polecenie ls

W Linux nie ma rozszerzeń plików i czasami trudno rozróżnić między plikami i folderami w danych wyjściowych ls. Domyslnie kolory dostarczają wskazówki: katalogi- niebieskie, pliki- czarne.

Opcje są oddzielone od poelcenie spacją i poprzedzone łącznikiem pisarskim (hyphen), czyli minusem.

Polecenie ls –l

Na lewo od każdej nazwy obiektu jest informacja o obiekcie w kliku kolumnach:

I- typ pliku lub obiektu (d- katalog, –plik)

II-X- prawa dostepu uzytkownika

XI- rozmiar pliku w bajtach

XII- dat i czas ostatniej zmiany w pliku jest wyświetlana

XIII- nazwa obiektu

Aby zobaczyć jeszcze więcej stosujemy ls –la. Pojawiają się pliki ukryte z kropką na przedzie.

Pomoc

polecenie –help

ls –help

Struktura katalogów w Linux

Ponieważ shell nie daje graficznego przeglądu katalogów i plików jak widok drzewa w menadżerze plików, jest uzyteczne mieć wiedzę o domyślnej strukturze katalogów w SO Linux. Można myśleć o katalogach jako elektronicznych folderach, w których pliki, foldery i podkatalogi są gromadzone. Katalogiem na szczycie jest /root. Do tego wszystkie inne katalogi mają dostęp. Katalog /home zawiera katalogi, w którym poszczególni uzytkownicy mogą gromadzić swoje osobiste pliki.

Uwaga: Katalog /home w środowisku sieciowym

jeśli pracujemy w środowisku sieciowym, nasz katalog /home może nie być nazwany /home. Może być mapowany do jakiegokolwiek katalogu w systemie plików.

/- katalog root

/home- osobiste katalogi użytkowników

/dev- pliki urządzeń, które reprezentują składniki hardware

/etc- ważne pliki dla konfiguracji SO

/etc/init.d- skrypty bootowania

/bin, /sbin- programy potrzebne na początku procesu bootowania (/bin) i dla administratora (/sbin)

/usr, /usr/local- wszystkie programy aplikacji i lokalne zależne od dystrybucji rozszerzenia (/usr/local)

/usr/bin, /usr/sbin- Ogólnie dostępne programy (/usr/bin) i zarezerwowane dla administratora SO ( /usr/sbin)

/usr/share/doc- różne pliki dokumentacyjne

/tmp, /var/tmp- pliki tymczasowe (nie zapisujemy plików w tym katalogu, jesli ich nie potrzebujemy)

/opt- opcjonale oprogramowanie, większe pakiety składników dodatkowych (jak KDE, GNOME i Netscape)

/proc- system plików procesu

/sys- system plików SO, gdzie wszystkie informacje o urządzeniach sązbierane dla kernela

/var/log- system plików logowania

Praca z katalogami i plikami

Aby zaadresować pewien plik lub katalog, musimy okreslić ściezkę prowadzącą do tego obiektu. Dwa spsoby określania ścieżki:

– absolutna- cała ścieżka od katalogu root do danego pliku (zawsze zaczyna się od slasha)

– względna- częściowa ścieżka z bieżącego katalogu do danego pliku (nie zaczyna się od slasha.

Przykład dla polecenia kopiowania pliku z katalogu /home do podkatalogu /tmp:

1/ Z naszego katalogu /home tworzymy podkatalog w /tmp:

a/ Jeśli bieżącym katalogiem nie jest /home, wprowadzamy

cd ~

aby przełączyć do /home (możemy tak zrobić z każdej lokalizacji).

b/ W katalogu /home wprowadzamy

mkdir /tmp/test

To polecenie tworzy nowy katalog zw. test i katalogu /tmp (musimy użyć ścieżki absolutnej).

c/ Aby sprawdzić, co się stało, teraz wprowadzamy

ls -l /tmp

Nowy katalog test pownien pojawić się w wylistowanej zawartości katalogu /tmp.

2/ teraz tworzymy nowy plik w katalogu /home i kopiujemy go do katalogu /tmp/test (ścieżka względna)

a/ wprowadzamy

touch myfile.txt

Jest utworzony nowy pusty plik zw. myfile.txt w bieżącym katalogu.

b/ Sprawdzamy go przez wprowadzenie

ls –l

Nowy plik powinien pojawić się wna liście zawartości.

c/ Wprowadzamy

cp myfile.txt ../tmp/test

To kopiuje plik myfile.txt do katalogu /tmp/test.

d/ Sprawdzamy to przez wprowadzenie

ls -l /tmp/test

Plik myfile.txt pownien pojawić na liście zawartości dla /tmp/test.

Aby wylistować zawartość katalogów /home innych uzytkowników, wprowadzamy:

ls ~username

ls ~tomasz

wylistuje zawartosć katalogu /home dla użytkownika tomasz.

Uwaga: Operowanie spacjami w nazwach plików i katalogów

Jeśli nazwa pliku zawiera spacje, albo używamy backslash (\) przed spacją albo zamykamy nazwę pliku w pojedynczym lub podwójnym cudzysłowiu. Inaczej Bash interpretuje nazwę pliku My Documents jako nazwy dwóch plików lub katalogów. Różnica między zastosowanym cudzysłowiem jest taka, że rozszerzenie zmiennej jest w podwójnym cudzysłowiu. Pojedynczy cudzysłów zapewnia, że shell widzi ciąg w cudzysłowiu dosłownie.

Użyteczne cechy Shell

Wprowadzanie poleceń w Bash może zawierać wiele wprowadzania. Bash ułatwia pracę i zapisuje dużo wprowadzeń.

Historia i uzupełnienie

Domyśle Bash pamięta polecenia, które wprowadziliśmy. To jest historia. Poruszamy się klawiszami strzałek. Ctrl+R przeszukuje hisotrię.

Można edytować wybrane polecenie np. zmieniając nazwę pliku przed wykonaniem tego.

Można napisać kilka pierwszych liter →|, czyli tabulator. Drugi raz tabulator- wyświetla wiel przykładów wypisanych liter.

Używanie znaków globalnych (wild cards):

?

*

[set]- dopasowuje jeden z wymienionych znaków

[:class:]- okreslamy charakter klasy, gdzie klasa jest jednym z alnum, alpha, ascii itp.

! lub ^- na początku grupy ([!set]) dopasowuje każdy inny jeden znak niż tu wymienione

Zakładając, że nasz katalog test zawiera pliki Testfile, Testfile1, Testfile2 i datafile.

Polecenie Testfile? listuje Testfile1 i Testfile2.

Polecenie ls Test* listuje też Testfile.

Polecenie ls *fil* pokazuje wszystkie pliki.

Użycie znaków globalnych do zaadresowania plików, których ostatnim znakiem jest liczba:

ls Testfile[1-9] lub uzywajac klasy ls Testfile[[:digit:]].

Najbardziej globalnym znakiem jest gwiazdka.

Przeglądanie plików z Less i More

Linux zawiera dawa małe programy dla przeglądania plików tekstowych bezpośrednio w shell: less i more. Niż uruchomienie edytora dla przeczytania pliku jak Readme.txt po prostu wprowadzamy

less Readme.txt

aby wyświetlić tekst w oknie konsoli.

spacja- przewija do dołu o jedną stronę

Page Up- idziemy do przodu w tekście

Page Down- idziemy do tyłu w tekście

Q- wyjście

Zmiast less można też wybrać starszy program more. Jest mniej wygodny, bo nie pozwala nam przewinąć do tyłu.

program lessdostał swoją nazwę z odczuwania, że mniej (less) jest więcej (more) i może też być użyte do przeglądnięcia danych wyjściowych poleceń w dogodny sposób.

Przekierowanie i potoki (pipes)

stdin0 stdout1

=================> polecenie ===============>

dane wejściowe | dane wyjściowe

inne polecenie | inne polecenie

|

stderr2

zakończenie błędem

dane wejściowe- może być klawiatura, ale może być też plik np. grep lub inne poelcenie np. pipe

dane wyjściowe- moniotr (konsola)

przekierowanie wyjścia przy pomocy nawiasu zamkniętego (>), jeśli plik nie istnieje, jest tworzony, a jak istnieje- jest nadpisywany

> nazwa_pliku- przekierowanie poleceń

>> nazwa_pliku- przekierowanie poleceń

w skrypcie jest to samo, co w linii poleceń- tak samo działa

repquota -qug > /nazwa_pliku- przekierowanie do pliku danych wyjściowych (a nie na monitor) np.

repquota -aug > /tmp/quota.log.- przekierowanie danych wyjściowych na plik /tmp/quota.log.

mail. adres odbioru- wysyłanie maili z linii polecenia

mail root@do 2 dig.

kończenie maila- w wolnej lini stawiamy kropkę (znak, że tu jest koniec maila)

.

wtedy warcamy do linii poleceń

W Windows tego nie ma

mail tomasz@komp.pl < /tmp/quota log

przekierowanie wejścia polecenia z pliku (pobierz plik)

ten plik trzeba spreparować (dodać kropkę) i można wysyłać

>- zamienia plik na inny nowy (nadpisuje)

>>- zawartość dopisuje na końcu pliku np. dodaje kropkę, której brakuje, aby zakończyć mail

echo- wypisuje to, co mamy w cudzysłowiu

echo „.” >> /tmp/quota.log

sprawdzamy, czy kropka została dodana

Jeśli odpalamy z cron (Zadania Zaplanowane w Windows) tu nie ma zmiennej PATH

/bin/echo „.” >> /tmp/quota.log

/bin/mail tomasz@komp.pl < /tmp/quota.log

raz na dobę robimy update bazy danych plików

whereis mail– w obrębie ścieżki znajduje się wszystkie pliki do poleceń mail, czyli pokazuje całą ścieżkę

drugi sposób przekierowania

mail -s „raport” -a /tmp/quota.log

trzeci sposób przekierowania

cat – wyświetala zawartość pliku

cat /tmp/quota.log | mail tomasz@komp.pl

5 routerów- na każdym 8 poleceń, co pochłania dużo czasu, dlatego automatyzujemy, aby przychodziły one do administratora

Normalnie standardowe dane wyjściowe w shell są na naszym ekranie lub w naszej konsoli i standardowe dane wejściowe są z klawiatury. Jednak shell daje funkcje, dzięki którym możemy przekierować dane wejściowe lub wyjściowe do innego obiektu, takiego jak plik lub inne polecenie.

Z pomocą symboli >i <można wysłać dane wyjściowe z polecenia do pliku (przekierowanie danych wyjściowych) lub użyć plik jako dane wejściowe dla polecenia (przeadresowanie danych wejściowych). Np. jeśli chcemy zapisać dane wyjściowe polecenia takiego jak lsdo pliku, wprowadzamy

ls -l > file.txt

To tworzy plik zw. file.txt, który zawiera listę zawartości naszego bieżącego katalogu jako generowanego przez polecenie ls. Jednak jeśli plik zw. file.txt już istnieje, to polecenie nadpisze istniejący plik. Aby tego uniknąć wpisujemy >>. Wprowadzając

ls –l>> file.txt

po prostu dodajemy dane wyjściowe polecenia ls do już istniejącego pliku zw. file.txt. Jeśli plik nie istnieje, jest tworzony.

Czasami jest użyteczne użyć plik jako dane wejściowe dla polecenia. Np. z poleceniem

tr

można zastąpić znaki przekierowane z pliku i zapisać rezultat do standardowych danych wyjściowych naszego ekranu. Np. chcemy zastąpić wszystkie znaki t w pliku file.txt z przykładu powyżej na x wydrukować to na ekranie. Robimy tak przez wprowadzenie:

tr t x < file.txt

Tak jak standardowe dane wyjściowe standardowe błędne dane wyjściowe są wysyłane do konsoli. Aby przekierować standardowe błędne dane wyjściowe do pliku zw. errors, dołączamy 2> errors do odpowiedniego polecenia. Zarówno standardowe dane wyjściowe i standardowe błędne dane wyjściowe są zapisywane do jednego pliku zw. alloutput jeśli dołączymy >& alloutput.

Używając potoku jest też sortowanie przekierowania, chociaż użycie potoku nie jest ograniczone do plików. Z potokiem można łączyć klika poleceń, używając danych wyjściowych jednego polecenia jako dane wejściowe dla następnego polecenia. Np. aby przejrzeć zawartość lub naszego bieżącego katalogu w less, wprowadzamy

ls | less

To ma tylko sens, kiedy normalne dane wyjściowe z ls byłyby zbyt długie. Np. jeśli przeglądamy zawartość katalogu dev z ls/dev, widzimy tylko małą porcję w oknie. Widzimy wylistowaną całość z poleceniem:

ls /dev | less

Kompresja archiwów i danych

Jeśli mamy duzo plików i katalogów możemy kompresować archiwa i dane. Jeśli chcemy spakować cały katalog test do jednego pliku, którego zapisalismy w pamięci USB jako kopię backup lub wysłać przez e-mail. Aby to zrobić używamy polecenia tar (dla archiwera taśmowego). Z tar –help widzimy wszystkie opcje. Najważniejsze:

-c- (create)- tworzenie nowego archiwum

-t- (table)- wyświetlanie zawartości archiwum.

-x- (extract)- rozpakowanie archiwum.

-v- (verbose)- pokazuje wszystkie pliki na ekranie podczas tworzenia archiwum.

-f- (file)- wybieramy nazwę pliku dla archiwizowanego pliku. Kiedy tworzymy archiwum ta opcja zawsze musi być dana na końcu.

Aby spakować katalog test ze wszystkimi plikami i podkatalogami do archiwum zw. testarchive.tar, robimy:

1/ Otwieramy shell.

2/ Uzywamy cd dla naszego katalogu /home, gdzie katalog test jest ulokowany.

3/ Wprowadzamy

tar -cvf testarchive.tar test

Opcja –c tworzy archiwum, robiąc go plikiem jako skierowanego przez –f. Opcja –v listuje pliki jak są przetwarzane.

4/ Przeglądanie zawartości pliku archiwalnego z

tar -tf testarchive.tar

Katalog test z wszystkimi swoimi plikami i katalogami pozostał niezmieniony na naszym twardym dysku. Aby go odpakować, wprowadzamy

tar -xvf testarchive.tar

ale nie robimy tego jeszcze.

Dla kompresji pliku oczywistym wyborem jest gzip lub, dla lepszej proporcji kompresji, bzip2. Wprowadzamy po prostu

gzip testarchive.tar lub bzip2 testarchive.tar

Z ls widzimy, że teraz plik testarchive.tar nie jest tam i że plik testarchive.tar.gz plik został stworzony zamiast. Teraz plik jest duzo mniejszy i pasuje do transferu przez e-mail lub przechowania w pamięci USB.

Teraz rozpakowujemy ten plik w katalogu test2 stworzonym wcześniej. Aby to zrobic, wprowadzamy

cp testarchive.tar.gz test2

dla kopiowania pliki to tamtego katalogu. Zmiana do katalogu z

cd test2

Skompresowane archiwum z rozszerzeniem .tar.gz może być odpakowane z polecniem gunzip.

Wprowadzamy gunzip testarchive.tar.gz

co daje w rezultacie plik testarchive.tar, który potem potrzebuje być extracted lub untarred z

tar -xvf testarchive.tar

Można też unzip lub extract skompresowane archiwum w jednym kroku z

tar -xvf testarchive.tar.gz

dodanie opcji –z już nie jest wymagane. Z ls możemy zobaczyć, że nowy katalog test został stworzony z taką samą zawartością jak nasz katalog test w naszym katalogu /home.

Czyszczenie

Możemy oczyścić katalog home przez wykasowanie róznych plików tekstowych i katalogów uzywając poleceń:

rm

rmdir

Użytkownicy i prawa dostępu

Od swego rozpoczęcia we wczesnych latach 90. Linux został rozwinięty w SO wieloużytkowy. Jakakolwiek liczba użytkowników może pracować na nim równocześnie. Użytkownicy muszą zalogować się przed otwraciem sesji przy ich stacjach roboczych.

Prawa dostępu do systemu plików

Zasadniczo każdy plik w systemie plików Linux należy do uzytkownika i grupy. Oni jak i wszyscy inni są autoryzowani do zapisu, odczytu i wykonania tych plików. Grupa to zestaw połączonych użytkowników z pewnymi wspólnymi prawami. Każdy uzytkownik w Linux jest członkiem przynajmniej jednej grupy posiadającej, zwykłych użytkowników. Tylko root dodaje grupy.Każdy uzytkownik może dowiedzieć się z poleceniem

groups

których grup jest członkiem.

Prawa dostępu do pliku

Ogranizacja praw do pliku w systemie plików odróznia pliki i katalogi. Informacja o prawach dostępu do pliku może być wświetlona z poleceniem ls –l.

-rw-r—– 1 tomza project3 14197 Jun 21 15:03 Roadmap

r- plik może być odczytywany

w- do pliku można zapisywać (zmieniać)

x- plik może być wykonywany

Ta pierwsza kolumna rodzaju obiektu i praw składa się z 10 pól. Plik należy to uzytkownika tomza. Jest w grupie project3. To jest plik tekstowy, a więc nie trzeba go wykonywać z opcją x. Inne prawa możemy nadać za pomocą ACL.

Prawa dostępu do katalogu

Indywidualne prawa mają trochę inne znaczenie niż w przypadku pliku.

drwxrwxr-x 1 tomza project3 35 Jun 21 15:15 ProjectData

r- zawartość katalogu może być pokazana, można przeglądać zawartość

w- można tworzyć nowe pliki kasować pliki w tym katalogu

x- użytkownik może zmieniać ten katalog

Modyfikacja praw dostępu do pliku

Zmienianie praw dostępu

Prawa dostępu do pliku lub katalogu mogą być zmienione przez właściciela i przez roota z poleceniemchmod

z parametrami zmieniającymi prawa i jedną lub więcej nazw plików. Parametry z róznych kategorii:

1/ Dotyczące użytkowników:

– u (user)—właściciel pliku

– g (group)—grupa, która posiada plik

– o (others)—dodatkowu uzytkownicy (jesli nie ma parametru zmiany odnoszą się do wszystkich kategorii)

2/

2. Znak dla deletion (–), setting (=) lub insertion (+)

3. Skróty:

– r—read

– w—write

– x—execute

4. Nazwa pliku lub nazwy plików oddzielamy przez spacje

chmod o+w- użytkownik tomza daje innym uzytkownikom prawo zapisu do katalogu

chmod go-w- użytkownik tomza zakazuje wszystkim uzytkownikom niż sam prawo zapisu do katalogu

Zmiana prawa własności i praw dostępu

Inne ważne polecenia do kontrolowania praw własności i praw dostepu komponentu systemu plików są za pomocą chown (change owner) i chgrp (change group). Polecenie chown może być użyte do transferu prawa własności pliku dla innego użytkownika. Jednak tylko root ma pozwolenie, aby wykonać tę zmianę.

Np. Plik Roadmap nie powinien należeć dłużej do tomza, ale do użytkownika pagantempereta. Root wprowadza:

chown pagantempereta Roadmap

chgrp zmienie prawa własnosci pliku. Jednak posiadacz pliku musi byc członkiem nowej grupy. W ten sposób uzytkownik tomza może przełączyć grupę posiadającą plik ProjectData doi project4 z poleceniem

chgrp project4

tak długo jak jest członkiem tej nowej grupy.

Ważne polecenia Linux

Poszczególne elementy polecenia są zapisane różnym krojem pisma. Bieżące polecenie i jego obowiązkowe opcje są zawsze wyświetlane jako opcje polecenia. Wyszczególnienia lub parametry, które nie są wymagane są w nawiasach kwadratowych.

Dwa sposoby zapisania opcji:

ls –la

lub

ls –l –a

Polecenia pliku

To opisuje cokolwiek z administracji ogólnej pliku do manipulacji systemu plików ACL.

Administracja pliku

ls [options] [files]

ls bez parametrów- zawartość bieżącego katalogu w krótkiej formie.

-l- lista szczegółowa

-a- ukryte pliki

cp [options] source target- kopiuje źródło do celu

-i- czeka na potwierdzenie, kiedy cel jest nadpisany.

-r- kopiuje z podkatalogami i plikami

mv [options] source target- kopiuje źródło do celu, potem usuwa oryginalne źródło.

-b- tworzy kopię backup źródła przed usunięciem.

-i- czeka na potwierdzenie zanim istniejący plik docelowy będzie nadpisany.

rm [options] files- usuwa określone pliki z systemu plików. Katalogi nie są usuwane przez rm, chyba że opcja –r jest użyta.

-r- usuwa jakiekolwiek istniejące podkatalogi

-i- czeka na potwierdzenie przed usunięciem każdego pliku

ln [options] source target- tworzy wewnętrzny link ze źródła do celu. Normalnie taki linkwskazuje bezpośrednio na źródło w tym samym systemie plików. Jednak jeśli in jest z opcją:

-s- tworzy symboliczny link, który tylko wskazuje na katalog, w którym źródło jest zlokalizowane, umożliwiając linkowanie przez systemy plików.

-s- tworzy symboliczny link

cd [options] [directory]- zmienia bieżący katalog. cd bez parametrów zmienia do katalogu domowego danego użytkownika

mkdir [options] directory- tworzy nowy katalog

rmdir [options] directory- kasuje katalog, jesli jest pusty.

chown [options] username[:[group]] files- tranferuje prawo posiadania pliku do innego użytkownika z określoną nazwą użytkownika

-R- zmienia pliki i katalogi we wszystkich podkatalogach

chgrp [options] groupname files- transferuje prawo posiadania grupy danego pliku do innej grupy z określoną nazwą gupy. Posiadacz pliku tylko zmienia prawo posiadania grupy, jeśli jest członkiem zarówno bieżącej jak i nowej grupy.

chmod [options] mode files- zmiany praw dostępu. Parametr mode ma trzy części: group, access i access type.

group- akceptuje znaki:

u- użytkownik

g- grupa

o- inni

Dla access

+- przydziela prawa

— zabiera prawa

access type jest kontrolowany przez opcje:

r- odczytywanie

w- zapisywanie

x- wykonywanie plików lub zmienianie katalogu

s- bit setuid- aplikacja lub program jest startowany jak gdyby był startowany przez właściciela pliku.

Jako alternatywa kod liczbowy może być użyty. Cztery cyfry tego kodu sa złozone z sumy wartości 4, 2 i 1- dziesiętny rezultat maski binarnej.

Pierwsza cyfra:

4- ustawia set user ID (SUID)

2- ustawia group ID

1- ustawia sticky bit

Druga cyfra:

Określa prawa dostępu właściciela pliku.

Trzecia cyfra:

Określa prawa dostępu grupy członków.

Czwarta cyfra:

Ustawia prawa dla wszystkich użytkowników.

4- ustawia odczytywanie

2- ustawia zapisywanie

1- ustawia wykonywanie

Własciciel pliku otrzymuje zazwyczaj 6 lub 7 dla plików wykonywalnych.

gzip [parameters] files- ten program kompresuje zawartość plików uzywając skomplikowanych matematycznych algorytmów. Pliki kompresowane w ten sposób są dane z rozszerzeniem .gz i potrzebują być rozkompresowane zanim będą użyte.

tar- aby skompresować kilka plików lub cały katalog.

-d- dekompresuje spakowane pliki gzip, więc one wracają do oryginalnego rozmiaru i mogą być przetwarzane normalnie (jak polecenie gunzip).

opcja archiwizujące pliki dla tar:

tar wkłada jeden lub więcej plików do archiwum. Kompresja jest opcjonalna. tar jest całkiem skomplikowanym poleceniem z wieloma dostępnymi opcjami. Najczęście używane:

-f- zapisuje dane wyjściowe do pliku a nie na ekran jak jest zazwyczaj

-c- tworzy nowe archiwum tar

-r- dodaje pliki do istniejącego archiwum

-t- dane wyjściowe zawartości archiwum

-u- dodaje pliki, ale tylko jeśli one są nowsze niż pliki już zawarte w archiwum

-x- rozpakowuje pliki z archiwum (extraction)

-z- pakuje wynikające archiwum z gzip

-j- kompresuje wynikające archiwum z bzip2

-v- listuje przetworzone pliki

Archiwa plikowe tworzone z tar mają zakończenie z .tar. Jeśli archiwum tar było też skompresowane używając gzip, zakończenie jest .tgz lub .tar.gz. Jeśli było skompresowane przy użyciu bzip2, zakończenie jest .tar.bz2.

locate patterns- to polecenie jest tylko dostepne, jesli zainstalowaliśmy pakiet findutils-locate. Poelcenia to może znaleźć, w którym katalogu okreslony plik jest zlokalizowany. Można uzywać znaków globalnych, aby okreslić nazwy plików. Program jest bardzo szybki, ponieważ używa specialnie stworzonej do tego celu bazy danych (niż szuka w całym systemie plików). Tu też jest jego główna wada- polecenie to nie jest zdolne do znalezienia pliku stworzonego po ostatnim uaktualnieniu bazy danych. Taka baza danych może być generowana przez root z poleceniem updatedb.

updatedb [options]- polecenie wykonuje aktualizację bazy danych używaną przez locate. Aby zawrzeć pliki w wszystkich istniejących katalogach, uruchamiamy program jako root. To też ma sens ustawienia tego w tle przez dodanie ampersand(&), więc można natychmiast kontynuować pracę na tej samej konsoli (updatedb &). Ro polecenie zazwyczaj uruchamia się jako daily cron job.

find [options]- szuka pliku w danym katalogu. Pierwszy katalog okresla katalog, w którym startuje wyszukiwanie. Opcja –name musi być z ciągiem wyszukiwania, który miże zawierac znaki globalne. Nie uzywa bazy danych, a skanuje systemy plików.

Polecenia dla zawartości praw dostępu do pliku

file [options] [files]- Z file wykrywamy zawartość okreslonych plików.

-z- próbuje zajrzeć do skompresowanych plików.

cat [options] files- wyświetla zawartość pliku, drukuje całą zawartość na ekranie bez przerwy.

-n- liczby danych wyjściowych na lewym marginesie

less [options] files- przegląda zawartość okreslonego pliku.

PgUp i PgDn- przewija zawartość o pół ekranu

Home i End- początek i koniec

Q- wyjście

grep [options] searchstring files- znajduje okreslony ciąg wyszukiwania w określonych plikach. Jeśli jest znaleziony, polecenie wyświetla linie, w której ciąg wyszukiwania został znaleziony z nazwą pliku

-i- ignoruje wielkość liter

-H- tylko wyświetla nazwy poszczególnych plików, ale nie tekstowe linie.

-n- dodatkowo wyświetla liczby linii, w których to znaleziono

-l- tylko listuje pliki, w których ciąg wyszukiwania nie pojawia się

diff [options] file1 file2- porównuje zawartość jakichkolwiek dwóch plików. Dane wyjściowe wytworzone przez program listują wszystkie linie, które nie pasują. Używane często przez programistów, którzy potrzebują tylko wysłać ich zmiany programu a nie cały kod źródłowy.

-q- tylko raportuje, czy te dwa pliki się różnią

-u- wytwarza “unified” diff, który czyni dane wyjściowe bardziej czytelnymi.

Systemy plików

mount [options] [device] mountpoint- może być używane dla podmontowania mediów danych takich jak twarde dyski, napędy CD-ROM i inne napędy do katalogu systemu plików Linux.

-r- podmontowuje tylko do odczytu

-t filesystem- określa system plików, zwykle ext2 dla Linuxowych twardych dysków

msdos dla mediów MS-DOS

vfat- dla Windowsa systemu plików

iso9660- dla CDs

Dla twardych dysków nie okreslonych w pliku /etc/fstab, typ urządzenia musi też być okreslony. W tym wypadku tylko root może to podmontować. Jesli system plików powinien być też podmontowany przez innych uzytkowników, wprowadzamy opcję user w odpowiednej linii w pliku /etc/fstab (oddzielone przez przecinki) i zapisujemy te zmiany.

Inne informacje na mount(1) man page.

umount [options] mountpoint- odmontowuje napęd z systemu plików. Aby uniknąć straty danych, ruszamy to przed usunięciem medium z danymi z napędu.

Normalnie tylko root uruchamia poelcenia mount i umount. Aby dodac innych użytkowników do tego, edytujemy plik /etc/fstab, aby okreslić opcję user dla poszczególnego napędu.

Polecenia systemu

Najważniejsze polecenia potrzebne dla odzyskania informacji systemowych i kontrolowania procesówi sieci.

Informacje o SO

df [options] [directory]- polecenie df (disk free) bez żadnych opcji wyświetla informacje o całkowitej przestrzeni dysku, przestrzeń dyskowa obecnie w użyciu i wolna przestrzeń na wszystkich podmontowanych urządzeniach. jeśli okreslony jest katalog, informacja jest ograniczona do urządzenia, na którym katalog jest ulokowany.

-h- pokazuje liczbę zajętych bloków w GB, MG i KB- w formie odczytywalnej dla człowieka

-T- typ systemu plików (ext2, nfs itp.)

du [options] [path]- polecenie bez opcji pokazuje całkowitą przestrzeń dyskową zajmowaną przez pliki i podkatalogi w bieżącym katalogu.

-a- wyświetla rozmiar każdego pojedynczego pliku.

-h- dane wyjściowe w formie odczytywalnej dla człowieka

-s- wyświetla tylko obliczony całkowity rozmiar

free [options]- wyświetla informacje o uzyciu przestrzeni RAM i swap, pokazujacej całkowitą i użytą sumę w obu kategoriach.

-b- dane wyjściowe w bajtach

-k- dane wyjściowe w kilobajtach

-m- dane wyjściowe w megabajtach

date [options]- prosty program wyświetla bieżący czas systemu. Jesli uruchomiony jako root, można też zmieniać czas SO. date(1) man page dla szczegółów.

Procesy

top [options]- dostarcza szybkiego przeglądu bieżąco działających procesów. Naciskamy H dla dostępu do strony, która krótko wyjaśnia główne opcje dla optymalizowania programu.

ps [options] [process ID]- jeśli bez opcji, to polecenie wyświetla tablicę wszystkich programów lub procesów, które startowaliśmy. Opcje nie są poprzedzone minusem

aux- wyświetla szczegółową listę wszystkich procesów, niezależnie od posiadacza

kill [options] process ID- wysyła sygnał TERM, który zamyka proces. Jeśli to nie pomaga, używamy:

-9- wysyła sygnał KILL zamiast sygnału TERM, zakańczając proces prawie w każdym przypadku

killall [options] processname- to polecenie jest podobne do kill, ale używa nazwy procesu (zamiast ID procesu) jako argumentu, zabijając wszystkie procesy z tą nazwą.

Sieć

ping [options] hostname lub IP address- testowanie podstawowej funkcjonalności dla sieci TCP/IP. To wysyła mały pakiet danych do docelowego hosta, wymagając natychmiastowej odpowiedzi. Jeśli działa, ping wyświetla wiadomości o wykonaniu, co wskazuje, że sieciowy link funkcjonuje zasadniczo.

-c number- ustala całkowitą liczbę pakietów do wysłania i zakończenia po tym jak one są wysłane (domyślnie nie ma żadnego ograniczenia)

-f- (flood ping)- wysyła tak wiele pakietów danych jak możliwe- popularny środek zarezerwowany dla root do testowania sieci

-i value- określa interwał między dwoma pakietami danych (domyślnie jedna sekunda)

nslookup- DNS rozdziela nazwy domen dla adresów IP. Z tym narzędziem wysyłamy zapytania dla serwerów nazw (DNS servers).

telnet [options] hostname or IP address [port]- jest to protokół internetowy, który umożliwia nam pracę na zdalnych hostach przez sieć. To też jest program Linuxa dla tego protokołu dla operacji na zdalnych komputerach.

Ostrzeżenie:

Nie używamy telnetu przez sieć, gdzie trzecia strona może podsłuchiwać. Uzywamy tutaj raczej ssh, aby uniknać ryzyka złego używania hasła.

Różności

passwd [options] [username]- uzytkownicy mogą zmieniać swoje hasła o każdej porze uzywajac tego polecenia. Root może używać poelcenia do zmiany hasła jakiegokolwiek uzytkownika w SO.

su [options] [username]- umożliwia logowanie pod różnymi nazwami uzytkowników z działajacej sesji. Określamy nazwę użytkownika i odpowiednie hasło. Hasło nie jest wymagane z poziomu root, bo root jest autoryzowany przejmować tożsamość jakiegokolwiek użytkownika. jesli bez nazwy uzytkownika, podajemy hasło root.

— z su staruje shell loginu dla innego użytkownika

halt [options]- aby uniknąć straty danych, zawsze powiniśmy używać tego programu, aby zamknąć nasz SO.

reboot [options]- SO natychmiast bootuje

clear- czyści widoczną powierzchnię konsoli. Nie ma opcji.

Polecenia związane z logami

daemon SSHD

syslog– daemon zbierania komunikatów z różnych części systemu, system zapisu logów, demon logowania

każdy daemon generuje logi, w których zapisuje swoją pracę, np. serwer Apache generuje dużo logów

/dev/loger- plik reprezentujący urządzenie

syslog– monitoruje to urządzenie

te logi w SO są niezależne od danego oprogramowania

są też metalogi

syslog czeka i nasłuchuje na logach, które zapisuje na dysku, ma najlepsze możliwości:

– możliwość zdalnego logowania

– możliwość zdalnego odbierania logów

Haker czyści ślady swojej obecności, czyli czyści logi. Na lokalnym systemie to proste, a na zdalnym jest bardzo ciężko.

/etc/syslog–ng /syslog–ng.conf- konfigurujemy tutaj sysloga

Procedura konfiguracyjna zasad logowania

1/ definjujemy źródła komunikacji (mogą być z różnych źródeł) np. przez port COM

2/ definjujemy wszystkie miejsca przeznaczenia komunikatów (pliki mogą być różne, a SO będzie je wrzucał)

3/ definjujemy filtry (np. wybierz komunikaty z Apache, czy wybierz komunikaty na poziomie security

4/ łączenie punktów 1, 2, 3, czyli reguła logowania (skąd, jak filtrować, dokąd zapisujemy, czyli gdzie ma trafiać)

source

destination

filtr

reguła logowania

source nazwa {definjujemy źródło};

słowem kluczowym jest source

jak definjujemy źródło- grupowanie opcji w nawiasach klamrowych {…}

internal– źródło wewnętrzne

unix –dgrm (“/dev/log”) unix datagrama- źródło w /dev/log

wszystkie daemony będą wrzucać swoje logi, kolejność nie ma znaczenia

filtr nazwa {definicja filtru};

filtr- słowo kluczowe

level– poziom ważności komunikatu domeny z parametrami (fascility– nadawca komunikatu)

jeśli nie ma level, to wszystko

local– komunikaty systemowe lokalne

regular expressions- wieloznaczniki np. * i ?- reguły wyszukiwania (wyszukiwania znaku)

match– dopasowuje

wyfiltrowanie komunikatu, który ma w nazwie jakieś słowo

trzeba tak poustawiać filtry, aby w natłoku informacji dostrzec te, które nas interesują

definjujemy miejsce przeznaczenia komunikatu

destination nazwa {definicja celu}

słowem kluczowym jest destination

połączenie wszystkiego ze sobą

log {source (nazwa); filtr (nazwa); destination (nazwa); };

słowem kluczowym jest log

Po takim poleceniu zapisujemy logi pochodzące z danego źródła i zostaną przefiltrowane zgodnie z naszymi wymaganiami i zapisane w miejscu przeznaczenia

alt+F10– tutaj zbierają się logi

|- przebieramy informacje na pewnym urządzeniu

Xconsole– konsola graficzna

Zawsze jest serwer i klient; tu jest serwer przyjmujący logi i przesyłający logi, które muszą być odpowiednio skonfigurowane

serwer wysyłający- źródło komunikatów

serwer przyjmujący- destination

źródłem logów jest sieć

konfiguracja sieci- name server- adres serwera nazw przez adres IP

może być kilka nazw serwerów jeden pod drugim

długie domeny zwłaszcza w Active Directory

W domenach przeszukiwania wypisujemy nazwę hosta w DNS, dlatego powiększa nazwę o domenę i dalej szuka.

nie wymaga restartu sieci

name server 154.204.152.34

name server 154.204.152.35 itd

dyrektywa options– tutaj nie manipulujemy

w logach też jest statystyka

source sieciowe {

udp (ip (“172.16.0.112” port (514)) ;

} ;

172.16.0.112- adres IP w lokalnym serwerze, który słucha na danej karcie sieciowej

UDP- ten protokół, a nie TCP; w UDP mogą być logi kilku urządzeń (w logach jest nazwa serwera; albo lokalny, albo sieciowy). Natomiast protokół TCP mógłby się zablokować.

/var/log/messages– trafiają tu wszystkie logi

/var/log/$HOST– każdy serwer w osobnym pliku

wpis na stronie wysyłającego serwera

w messages jest- data, godzina, nazwa komputera, daemon, nr procesu, treść loga z numerem IP

To trzeba wycinać przez Firewall (serwer blokowania)- jest przed daemonem SSH

konfiguracja po stronie klienta- wysłać

zdefiniowanie destynacji, nazwa destynacji {udp (171.16.0.112 port (514)) ; } ;

destination serwer_logów

log {source (src) ; destination (serwer_logów) ; } ;

wszystkie logi będą trafiały na port (514)

W Windows nie jest podobnie- logi zapisuje na lokalnym serwerze

Permitroot login– ma 3 wartości:

{yes, no, without password}

yes– logi otrzymuje bezpośrednio root

no– logi na zwykłego użytkownika, potem na roota

without password- logi na roota bez używania hasła, ale są dwa klucze (publiczny i prywatny), czyli trzeba wygenerować dwa pliki. SO porównuje połówki kluczy (funkcje, które nie mają odpowiednich funkcji odwrotnych, dlatego trudno je złamać)

MONITOROWANIE SYSTEMU W LOGACH

Szukamy odpowiedzi:

– czy SO bootuje normalnie?

– jaka jest wersja kernela?

– jakie usługi działają?

– jakie jest ładowanie do SO?

Możemy znaleźć informacje o hardware i SO:

– informacje logów bootowania

– informacje o hardware (/proc/)

– informacje o hardware (programy wiersza polecenia)

– informacje o SO i procesie (programy wiersza polecenia)

– monitorowanie przestrzeni twardego dysku

Informacje logów bootowania

Kiedy SLES 10 startuje, pewne linie w konsoli są rozwijane zbyt szybko, aby przeczytać. Te wiadomości są trzymane w ringbuffer kernela. Z racji, że pojemność tego jest niewielka, jedne linie są kasowane, gdy drugie dodawane. Aby mieć dostęp do wiadomości dostępnych nawet wtedy, kiedy skasowano je z buffera, są zapisywane do pliku /var/log/boot.msg w lekko zmodyfikowanym formacie po zabootowaniu SO. Dla każdej linii wyświetlanej w konsoli podczas startu jest jeden lub kilka linii w pliku /var/log/boot.msg.

dmesg jest poleceniem używanym do przeglądania bieżącej zawartości ring buffer kernela.

dmesg | less pozwala na rozwijanie i zwijanie danych wyjściowych, co wygląda podobnie do:

Linux version…

BIOS-provided physical RAM map:

Dane wyjściowe dmesg pokazują wiadomości generowane podczas inicjalizacji hardware przez kernel i moduły kernela. Plik /var/log/boot.msg zawiera dodatkowe informacje poza tym, co można wyświetlić przez dmesg. Te informacje zawierają dane takie jak wiadomości o różnych skryptach generowanych w czasie bootowania i kody stanu exit:

System Boot Control: The system has been set up

INIT: Entering runlevel: 5

Boot logging started on /dev/tty1 (/dev/console) at Wed May 24 10:31:51

2006

Master Resource Control: prevoius runlevel: N, switching to runlevel: 5

Te dodatkowe wiadomości mogą być użyteczne podczas troubleshooting.

Można użyć też YaST, aby przeglądać zawartość pliku przez startowanie YaST i potem wybierając Miscellaneous==>View Start-up Log.

Lub startujemy moduł bezpośrednio przez yast2 view_anymsg w oknie terminala jako root.

Informacje o hardware (/proc/)

Katalog /proc/ zawiera wiele informacji na temat działającego systemu, w tym informacja o hardware przechowywana w przestrzeni pamięci kernela. Np. jeśli wprowadzimy

cat /proc/cpuinfo

dane wyjściowe są generowane z danych przechowywanych w pamięci kernela, który daje informacje takie jak nazwę modelu CPU i rozmiar cache. Można przeglądać dostępne informacje przez używanie poleceń takich jak cat, more lub less z nazwą pliku (jak np. cat /proc/cpuinfo).

/proc/devices- przegląd urządzeń używanych na SO Linux

/proc/cpuinfo- przegląd informacji o procesorze

/proc/ioports- przegląd portów I/O (wejścia/wyjścia) na danym serwerze; porty I/O są adresowane przez różne urządzenia hardware

/proc/interrupts- przegląd IRQ (Hardware Interrupt Signal) przypisanego dla danego SO

/proc/dma- przegląd kanałów DMA (Direct Memory Access) używanych na SO

/proc/bus/pci/devices- przegląd informacji o PCI (Peripheral Component Interconnect) na SO

/proc/scsi/scsi- przegląd podsumowania informacji o SCSI (Small Computer System Interface) na SO

Informacje o hardware (programy wiersza polecenia)

Można użyć następujące programy użytkowe z wiersza polecenia, aby przejrzeć informacje o hardware w danym SO:

hwinfo- wytwarza i wyświetla listę określonych informacji o urządzeniach zainstalowanych na SO Linux.

hwinfo | less- jeśli chcemy przewijać listę wprowadzamy

hwinfo –short- dla podsumowania listowania, wprowadzamy

hwinfo –log nazwa_pliku- aby zapisać informację do pliku logowania.

hdparm- wyświetla informację o twardym dysku i pozwala nam zarządzać parametrami twardego dysku.

Np. opcja –i wyświetla informacje identyfikacji twardego dysku dostępne podczas bootowania. Opcja –I wymaga informacji bezpośrednio z twardego dysku.

hdparm lub hdparm –h- wprowadzamy dla podsumowania listy dostępnych opcji

fdisk- użyta początkowo do zarządzania tablicą partycji na SO Linux. Można też użyć opcji takich jak –l (listowanie tablicy partycji) lub –s (rozmiar partycji), aby przeglądać informacje o twardym dysku.

iostat- wyświetla CPU i statystyki input/output (I/O) dla urządzeń i partycji. Program iostat jest częścią pakietu sysstat.

Te polecenie wytwarza raporty, które mogą być użyte do zmiany konfiguracji SO, aby lepiej zrównoważyć ładowanie input/output między fizycznymi dyskami.

Pierwszy wytwarzany raport dostarcza statystyk dotyczących czasu, od kiedy SO jest bootowany. Każdy następny raport omawia czas od poprzedniego raportu.

Można wytworzyć dwa typy raportów z tym poleceniem- raport użycia CPU i raport użycia urządzenia.

Opcja –c wytwarza tylko raport użycia CPU, opcja –d wytwarza tylko raport użycia urządzenia.

lspci- wyświetla informację o wszystkich szynach PCI w SO i wszystkich urządzeniach podłączonych do nich.

Opcje –v i –vv wytwarzają wielosłowne raporty.

Opcja –b daje nam szynocentryczny przegląd wszystkich numerów IRQ i adresów, jako widzianych przez karty (zamiast kernela) na szynie PCI.

siga- System Information GAthering (system zbierania informacji)- zbiera informacje o naszym SO i daje dane wyjściowe w formacie HTML lub ASCII.

sitar- System InformaTion At Runtime (informacje systemowe w czasie pracy maszyny)- przygotowuje informacje systemowe przy użyciu Perl, odczytując system plików /proc. Dane wyjściowe są zapisywane do /tmp w HTML, LaTeX i uproszczonego doc-book-xml.

Informacje o SO i procesie (programy wiersza polecenia)

Poza ps i top są inne polecenia, aby przejrzeć informacje systemowe:

uptime

netstat

uname

xosview

uptime

Chociaż polecenie top daje informacje systemowe w nagłówku, ale może być potrzeba tylko określonej informacji bez uruchamiania programu użytkowego. Np. można użyć polecenie uptime, aby wyświetlić bieżący czas, długość czasu, od kiedy SO działa, liczbę użytkowników na SO i średnią liczbę zadań w kolejce do uruchomienia przez ostatnie 1, 5, 15 minut:

tomasz@da10:~ > uptime

1:13pm up 2:42, 1 user load average: 0.02, 0.12, 0.09

inne informacje na man uptime.

netstat

Podczas gdy polecenie ps dostarcza informacji na poziomie procesu, można użyć netstat, aby dowiedzieć się, które sieciowe porty oferują usługi i jakie połączenia są ustanowione:

da10:~ # netstat –patune

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

User Inode PID/Program name

tcp 0 0 149.44.87:427 0.0.0.0:* LISTEN

0 6812 2723/slpd

tcp…

0…

Opcje dostosowujące dla netstat:

-p– pokazuje procesy jako root

-a– pokazuje sockety słuchające i niesłuchające (wszystkie)

-t– pokazuje informacje TCP

-u– pokazuje informacje UDP

-n– nie rozdziela nazwy hostów

-e– wyświetal dodatkowe informacje (rozszerzone)

-r– wyświetla informacje o routingu

uname

Używamy polecenia uname, aby dowiedzieć się o bieżącej wersji kernela:

da10:~ # uname –a

Linux da10 2.6.16.14-6-smp #1 SMP Tue May 9 12:09:06 UTC 2006 i686 i686

i686 GNU/Linux

xosview

Z graficznego desktopu można użyć programu użytkowego xosview (pakiet xosview), aby wyświetlić stan kilku parametrów opartych na SO, takich jak użycie CPU, średnie załadowanie, użycie pamięci, użycie przestrzeni swap, użycie sieci, przerywania i stan portu szeregowego.

Aby uruchomić xosview, wprowadzamy

xosview &

Pojawi się okno z bieżącymi parametrami i wykresami. q– wychodzimy.

Monitorowanie przestrzeni twardego dysku

W wierszu polecenia wpisujemy df i du. Równoważnikiem tego w graficznym interfejsie jest Gnome System Monitor (Computer===>More Applications===>System===>Devices)

Użycie systemowych usług logowania

SO Linux ma wiele logów, które śledzą różne aspekty działania SO. Wiele usług loguje swoje aktywności do ich własnego pliku logowania i poziom szczegółów może być ustawiony na bazie przez pośrednictwo usługi. Dodatkowo system loguje w /var/log/, co śledzi zdarzenia na poziomie SO. Informacje logowane w tych plikach logowania są typowo używane do pomocy podczas troubleshooting i dla celów bezpieczeństwa. Pliki logowania powinny być regularnie przeglądane.

Daemon sysloga, czyli syslog-ng

Demon sysloga syslog-ng jest używany przez wiele usług do logowania zdarzeń systemowych. Korzyścią w używaniu pojedynczej usługi do logowania jest to, że wszystkie logowania mogą być zarządzane z jednego pliku konfiguracyjnego. W SLES 9 i wersjach wcześniejszych syslogd był używany do logowania systemowych zdarzeń. Z SLES 10 te zdarzenia były logowane przez syslog-ng, nowego syslogd. Główną zaletą syslog-ng w porównaniu z syslogd jest zdolność do filtrowania wiadomości nie tylko w oparciu na programach użytkowych i priorytetach, ale też w oparciu na zawartości każdej wiadomości. Daemon syslog akceptuje wiadomości z usług systemowych i, zależnie od jego konfiguracji, innych hostów i loguje je na bazie ustawień w plikach konfiguracyjnych:

/etc/sysconfig/syslog

/etc/syslog-ng/syslog-ng.conf

Ten ostatni plik jest generowany przez SuSEconfig z pliku /etc/syslog-ng/syslog-ng.conf.in. Oba pliki mają taką samą składnię. Konfiguracja syslog-ng dzielona jest na trzy pliki:

/etc/sysconfig/syslog

/etc/syslog-ng/syslog-ng.conf.in

/etc/syslog-ng/syslog-ng.conf

Plik /etc/sysconfig/syslog

Zawiera ogólne parametry dające się zastosować do syslog-ng i do syslogd. Parametry w tym polu zawierają przełączenia przejścia z syslogd do syslog-ng, poziomu logowania kernela, parametrów dla klogd i który daemon ma być używany:

## Type: string

## Default: „”

## Config: „”

## ServiceRestart syslog

#

# if not empty: parameters for syslogd

# for example SYSLOGD_PARAMS=”-r my.dom.ain”

#

SYSLOGD_PARAMS=””

## Type: string

Parametry ustawiane w /etc/sysconfig/syslog są obliczane przez skrypt startowy /etc/init.d/syslog. Co więcej SuSEconfig używa /etc/sysconfig/syslog do dodania socketów logowania do /etc/syslog-ng/syslog-ng.conf.in.

Plik /etc/syslog-ng/syslog-ng.conf.in

Plik /etc/syslog-ng/syslog-ng.conf.in jest szablonem używanym do tworzenia pliku /etc/syslog-ng/syslog-ng.conf, czyli pliku konfiguracyjnego aktualnie używanego przez syslog-ng. Oba pliki mają tę samą składnię. Jednak jeśli nie wyłączymy generacji, plik /etc/syslog-ng/syslog-ng.conf w /etc/sysconfig/syslog, jakiekolwiek ręczne zmiany w tym pliku będą nadpisane, kiedy SuSEconfig jest wykonywany. Dlatego zmiany w konfiguracji syslog-ng powinny być zrobione w tym pliku.

Plik /etc/syslog-ng/syslog-ng.conf

Daemony syslog i syslog-ng podzielają dwa koncepty, że musimy rozumieć, aby być w stanie konfigurować każdy jeden:

– programy użytkowe

– priorytety

Konfiguracja syslog-ng składa się z kilku części, które potem są łączone do konfigurowania, jaka informacja gdzie jest zalogowana. Te części to:

– źródła

– filtry

– cele

– ścieżki logowania

Programy użytkowe

Odnoszą się do podsystemu, który dostarcza odpowiednich wiadomości. Każdy program, który używa syslog dla logowania, jest wyznaczony jako program użytkowy, zazwyczaj przez ich programistów. Te programy użytkowe to:

authpriv– używany przez wszystkie usługi, które mają coś wspólnego z bezpieczeństwem SO lub autoryzacji. Wszystkie wiadomości PAM używają tego programu użytkowego, też daemon ssh.

cron– akceptuje wiadomości z daemonów cron i at.

daemon– używany przez różne daemony, które nie mają swoich własnych programów użytkowych, takie jak daemon ppp.

kern– wszystkie wiadomości kernela.

lpr– wiadomości z systemu drukowania.

mail– wiadomości z systemu mail. To jest ważne, bo wiele wiadomości może dotrzeć bardzo szybko.

news– wiadomości z systemu wiadomości. Wiele innych wiadomości też może potrzebować logowania w krótkim czasie.

syslog– wewnętrzne wiadomości daemona sysloga.

user– Ogólny program użytkowy dla wiadomości na poziomie użytkownika. Np. to jest używane przez login do logowania nieudanych logowań.

uucp– wiadomości z systemu uucp.

local0-local7– tych osiem programów użytkowych jest dostępnych dla swojej własnej konfiguracji. Wszystko z lokalnych kategorii może być użyte w swoich własnych programach. Przez konfigurowanie jednego z tych programów użytkowych, wiadomości ze swoich własnych programów mogą być administrowane indywidualnie przez wpisy w pliku /etc/syslog-ng/syslog-ng.conf.

Priorytety

Priorytet daje szczegóły o pilności wiadomości. Następujące priorytety są dostępne (wylistowane wg. wzrastającego stopnia pilności):

debug– powinien być tylko używany dla celów debuggowania, ponieważ wszystkie wiadomości z tej kategorii i wyższej są logowane.

info– używany dla wiadomości, które są czysto informacyjne.

notice– używany dla wiadomości, które opisują stany normalnego systemu, który powinien być zanotowany.

warning– używany dla wiadomości wyświetlających odchylenia od normalnego stanu.

err– używany dla wiadomości wyświetlających błędy.

crit– używany dla wiadomości w krytycznych warunkach dla określonego programu

alert– używany dla wiadomości, które informują nas, że natychmiastowa akcja jest wymagana, aby utrzymywać system w stanie funkcjonowania.

emerg– używany dla wiadomości, które ostrzegają nas, że system już nie jest do użycia.

Części konfiguracji syslog-ng

Źródła

Źródło jest zbiorem sterowników źródeł, które zbierają wiadomości, używając danej metody. Te źródła są używane do zebrania wiadomości w postaci logów. Ogólna składnia:

source <identifier> { source-driver (params); source-driver (params); …};

Poszczególne sekcje w /etc/syslog-ng/syslog-ng.conf wygladają jak:

source src {

# include internal syslog-ng messages

# note: the internal () source is required!

internal ();

# the following line will be replaced by the

# socket list generated by SuSEconfig using

# variables from /etc/sysconfig/syslog:

unix-dgram („/dev/log”);

# uncomment to process log messages from network:

#udp (ip(„0.0.0.0”) port (514));

};

Filtry

Filtry są wyrażeniami booleanskimi, które odnoszą się do wiadomości i są analizowane jako albo prawdziwe, albo fałszywe. Ogólna składnia:

filter <identifier> { expression; };

Identyfikator musi być unikalny w danej konfiguracji i jest używany potem do konfigurowania aktualnego logowania. Wyjątek z /etc/syslog-ng/syslog-ng.conf pokazuje pewne filtry używane w SLES 10:

#

# Filter definitions

#

filter f_iptables { facility (kern) and match („IN=”) and match („OUT=”);

};

filter f_console { level (warn) and facility (kern) and not

filter if_iptables) or level (err) and not facility (authpriv); };

Jak możemy zobaczyć, program użytkowy i priorytet (level) może być używany w filtrach. Jednak jest też możliwe, aby przefiltrować zgodnie z zawartością linii, będąc zalogowanym, jak w f_iptables filter powyżej.

Łączenie wyrażeń z „and”, „or” lub „and not” pozwala nam na stworzenie bardzo określonych filtrów.

Cele

Cele określają, gdzie wiadomości mogą być logowane. Ogólna składnia:

destination <identifier> {

destination- driver (params);

destination-driver (params); … };

Możliwe cele są filtrami, plikami typu FIFO, socket, ttys pewnych użytkowników, programów lub innych hostów.

Próbka z /etc/syslog-ng/syslog-ng.conf wygląda jak:

destination console { file („/dev/tty10” group (tty) perm (0620)); };

destination message { file („/var/log/message”); };

Ścieżki logowania

Są punktem, gdzie to wszystko schodzi się razem. One określają, które wiadomości są logowane w jakim miejscu, zależnie od źródła, filtra i celu. Ogólna składnia:

log {source (sl); source (s2); …

filter (f1); filter (f2); …

destination (d1); destination (d2); …

flags (flag1 [, flag2…]); };

Następujące wpisy w /etc/syslog-ng/syslog-ng.conf np. są odpowiedzialne za logowanie do /dev/tty10 i /var/log/messages:

log (source (src); filter (f_console); destination (console); );

log (source (src); filter (f_messages); destination (messages); );

W pierwszej linii wiadomości logowania, które przechodzą przez źródła określone w source src są logowane do tty10, jeśli one pasują do filtra f_console.

W linii drugiej wiadomości, które przychodzą przez źródła określone w source src są logowane do /var/log/messages, jeśli one pasują do filtra f_messages.

Dalsze szczegóły pliku syslog-ng.conf po wprowadzeniu man 5 syslog-ng.conf. Ogólny przegląd syslog-ng a także szczegółów konfiguracji w /usr/share/doc/packages/syslog-ng/html/book1.html

Ważne pliki logowania

Większość wiadomości jest zapisanych w pliku logowania /var/log/messages. Często wskazówki mogą być tu znalezione o problemach takich jak, dlaczego usługa nie funkcjonuje należycie, kiedy to startuje. Jeśli nie ma wskazówki w /var/log/messages, /var/log/audit.log, plik logowania dla wiadomości AppArmor, może dostarczyć więcej informacji. Wiadomości zapory są logowane w /var/log/firewall.

Dobrze jest dla czytania plików logowania użyć wiersza polecenia i polecenia tail:

tail /var/log/messages

To polecenie wyświetla ostatnie 10 linii pliku, które są też najświeższymi wpisami.

Przez używanie tail –n (taki jak tail –n 30), można określić liczbę linii do wyświetlenia.

Jeśli chcemy mieć nowe wiadomości wyświetlane natychmiast, używamy trybu interaktywnego z tail –f. Np. wprowadzając

tail -20f /var/log/messages

przełącza tail do trybu interaktywnego. Ostatnie 20 linii dla pliku /var/log/messages są wyświetlane. Jeśli nowe wiadomości są dodane, te są natychmiast wyświetlane.

Można zatrzymać

tail –f

przez naciśnięcie Ctrl+c.

Ważne pliki logowania w katalogu /var/log/:

/var/log/audit/- ten katalog magazynuje pliki logowania dla Novell AppArmor w audit.log.

/var/log/cups/- ten katalog magazynuje pliki logowania dla systemu drukowania CUPS.

/var/log/news/- ten katalog magazynuje wiadomości dla systemowych news.

/var/log/YaST2/- ten katalog magazynuje pliki logowania dla YaST.

/var/log/boot.msg- kiedy system bootuje, wszystkie skrypty bootowania dla wiadomości są wyświetlane na pierwszej konsoli wirtualnej, to często zdarza się tak szybko, że nie można przeczytać. Jednak można czytać wiadomości bootowania w tym pliku.

/var/log/mail- wiadomości z systemu mail są zapisywane do tego pliku. Ponieważ ten system często generuje wiele wiadomości, są dodatkowe pliki logowania:

/var/log/mail.err

/var/log/mail.info

/var/log/mail/warn

/var/log/wtmp- ten plik zawiera informacje o tym, który użytkownik był zalogowany, gdzie użytkownik loguje się, jak długo użytkownik był zalogowany (od czasu, jak plik był stworzony).

Zawartość pliku jest w formie binarnej i może tylko być wyświetlana z poleceniem last (/usr/bin/last).

Z powodu formatu binarnego jest trudno manipulować wpisami w tym pliku.

/var/log/lastlog- ten plik zawiera informacje, o których użytkownik był ostatnio zalogowany, gdzie użytkownik loguje się i jak długo użytkownik był zalogowany.

Można tylko przeglądać zawartość z poleceniem lastlog (/usr/bin/lastlog).

Archiwizowanie plików logowania (logrotate)

Jest wiele usług (daenmons), które razem z samym kernelem regularnie zapisują stan SO i okreslone zdarzenia do plikow logowania. Tak administrator sprawdza stan SO o pewnym czasie, rozpoznaje błędy lub złe funkcje i Pliki logowania są w /var/log jak określono w FHS i rosną w dziennej podstawie. logrotate kontroluje rozrost tych plików. Konfigurujemy logrotate /etc/logrotate.conf. Programy produkujące pliki logowania instaluja indywidualne pliki konfiguracyjne w /etc/logrotate.d. Np. apache2 (/etc/logrotate.d/apache2) i syslogd (/etc/logrotate.d/syslog).

Jest ważne, aby zapewnić, żeby pliki logów nie zajmowały zbyt dużo przestrzeni w SO. Dlatego rozmiar i wiek plików logowania są monitorowane automatycznie przez program logrotate (/usr/sbin/logorotate).

Program jest uruchamiany codziennie przez daemona cron (/etc/cron.daily/logrotate). Program sprawdza wszystkie pliki logowania wylistowane w swoich plikach konfiguracyjnych i podejmuje jakąkolwiek akcję wymaganą przez konfigurację dla poszczególnego pliku. Można konfigurować ustawienia w plikach, aby wskazać czy pliki powinny być skompresowane lub skasowane w regularnych odstępach czasowych lub kiedy określony plik jest osiągnięty. Można też konfigurować, jak wiele skompresowanych wersji pliku logowania jest trzymanych przez określony czas. Pliki logowania mogą też być wysyłane prze e-mail. Plik konfiguracyjny logrotate jest w /etc/logrotate.conf, co zawiera ogólne ustawienia konfiguracyjne. Przykład logrotate.conf:

# see „man logrotate” for details

# rotate log files weekly

weekly

# keep 4 weeks worth of backlogs

rotate 4

# create new (empty) log files after rotating old ones

create

# uncomment this if you want your log files compressed

# compress

# uncomment these to switch compression to bzip2

#compresscmd /usr/bin/bzip2

#uncompresscmd /usr/bin/bunzip2

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d

# no packages own lastlog or wtmp – we’ll rotate them here

#/var/log/wtmp {

# monthly

# create 0664 root utmp

# rotate 1

#}

# system-specific logs may be also be configured here.

logrotate jest kontrolowane przez cron i jest wywoływany daily przez /etc/cron.daily/logrotate.

Ważne:

Opcja create odczytuje wszystkie ustawienia uczynione przez administratorra w /etc/permissions*. Zapewnia, że żadne konflikty nie wynikną z jakichkolwiek osobistych modyfikacji.

Opcje w pliku:

weekly– pliki logowania są tworzone lub zastępowane raz na tydzień.

rotate 4- jeśli opcja rotate nie jest określona, stare pliki są kasowane. Tutaj ostatnie cztery wresje pliku logowania są trzymane (rotate 4).

create– stary plik jest zapisywany pod nową nazwą i nowy, pusty plik logowania jest tworzony.

compress– jeśli opcja compress jest aktywowana, kopie są magazynowane w formie skompresowanej.

Wiele pakietów RPM zawiera przedkonfigurowane pliki dla analizy przez logrotate. Te pliki są magazynowane w /etc/logrotate.d/ i są odczytywane przez logrotate przez wpis include /etc/logrotate.d w /etc/logrotate.conf.

Jakiekolwiek ustawienia w plikach logrotate.d zastępują ogólne ustawienia w logrotate.conf. Trzeba listować pliki, które chcemy, aby były monitorowane we wpisach w pliku /etc/logrotate.conf (takie jak /var/log/wtmp [options] lub w oddzielnych plikach konfiguracyjnych. Przykład pliku syslog w /etc/logrotate.d/:

#

# Please note, that changing of log file permissions in this

# file is not sufficient if syslog-ng is used as long daemon.

# It is required to specify the permissions in the syslog-ng

# configuration /etc/syslog-ng/syslog-ng.conf.in as well.

#

/var/log/warn /var/log/messages /var/log/allmessages

/var/log/localmessages /var/log/firewall {

compress

dateext

maxage 365

rotate 99

missingok

notifempty

size +4096k

create 640 root root

sharedscripts

postrotate

/etc/init.d/syslog reload

endscript

}

Pliki syslog i syslog-ng w /etc/logrotate.d/ zawierają ustawienia dla konfigurowania, jak pliki logowania są zapisane przez syslog (syslog lub syslog-ng) będą traktowane. Tablica opisująca opcje w tym pliku:

size +4086k– pliki nie będą rotowane aż one osiągną rozmiar 4096 KB.

rotate 99- 99 wersji każdego pliku będzie trzymane.

compress– stare pliki logowania będą magazynowane w formie skompresowanej.

maxage 365– jak tylko skompresowany plik jest starszy niż 365 dni, jest kasowany.

notifempty– jeśli plik logowania jest pusty, nie ma żadnej rotacji.

create 640 root root– nowe pliki logowania są tworzone po rotacji i właściciel, grupa i prawa do pliku dla nowego pliku są określane.

postrotate … endscript- skrypty mogą być wezwane po rotacji. Np. pewne usługi muszą być startowane ponownie po tym jak pliki logowania zostaną zmienione.

W tym przykładzie daemon syslog będzie czytał jeszcze raz swoje pliki konfiguracyjne po tym jak rotacja (/etc/init.d/syslog jest załadowny jeszcze raz). Ponieważ ten skrypt jest taki dla syslogd i syslog-ng, nie ważne, który z nich jest używany.

Monitorowanie aktywności loginu

Jedno z najbardziej krytycznych zadań dla administratora jest upewnienie się, że zauważymy i zadziałamy na jakąkolwiek podejrzaną działalność na SO, która może wskazywać na narażenie bezpieczeństwa. Zadania monitorowania zawierają analizowanie aktywności loginu dla naruszenia bezpieczeństwa takie jak liczne nieudane logowania. O aktywności loginu mamy też informacje podczas przeglądania plików takich jak /var/log/messages.

Monitorowanie aktywności loginu z poleceniami:

who– te polecenie pokazuje kto jest obecnie zalogowany do SO i informację taką jak czas ostatniego loginu.

Opcje jak:

-H– wyświetla nagłówki kolumn

-r– bieżący runlevel

-a– wyświetla informację dostarczoną przez większość opcji

Np. wprowadzenie who –H zwraca informację:

da10:~ # who –H

NAME LINE TIME COMMENT

root pts/0 2006-05-24 10:33 (da1.digitalairlines.com)

tomasz :0 2006-05-24 10:54

tomasz pts/0 2006-05-24 10:54

w– to polecenie wyświetla informację o obecnych użytkownikach na maszynie i ich procesach.

Pierwsza linia zawiera informacje o bieżącym czasie, jak długo SO funkcjonuje, jak wiele użytkowników jest obecnie logowanych i załadowanie systemu dla minionych 1, 5 i 15 minutach. Pod pierwszą linią jest wpis dla każdego użytkownika, który wyświetla nazwę loginu, nazwę tty, zdalnego hosta, czas loginu, czas bezczynności, JCPU, PCPU i linię polecenia bieżącego procesu użytkownika.

Czas JCPU jest czasem użytym przez wszystkie procesy przyłączone do tty. To nie zawiera minionych zadań z drugiego planu, ale to zawiera zadania bieżąco działające w drugim planie.

Czas PCPU jest czasem użytym przez bieżący proces, co jest zwane w polu What.

Można użyć opcji takich jak –h (nie wyświetlaj nagłówka), -s (nie wyświetlaj czasu loginu, JCPU i PCPU) i –V (wyświetla informacje o wersji).

Wprowadzając w mamy zwrot:

da10:~ # w

15:06:45 up 4:35 4 users , load average: 0.00, 0.00, 0.00

USER TTY LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 10:33 0.00s 0.73s 0.02s w

tomasz :0 15:54 ?xdm? 1:15 0.58 /bin/sh

/opt/kde3/bin/startkde

finger– to polecenie wyświetla informacje o lokalnym czy zdalnym systemie użytkowników. Domyślnie następująca informacja jest wyświetlana o każdym bieżącym użytkowniku zalogowanym do lokalnego hosta:

Login name

User’s full name

Associated terminal name

Idle time

Login time (i from where)

Można użyć opcji takich jak –l (long format) i –s (short format).

Np. wprowadzając finger –s zwraca informacje:

da10:~ # finger –s

Login Name Tty Idle Login Time Where

tomasz Tomasz *:0 – Wed 13:54

tomasz Tomasz pts/1 1:13 Wed 13:54

tomasz Tomasz *pts/3 1:02 Wed 13:55

root root pts/0 – Wed 10:33 da1.digitalairl

last– to polecenie wyświetla listę użytkowników, którzy są zalogowani w i wylogwani z od czasu, kiedy plik /var/log/wtmp został stworzony. Ostatnie przeszukiwania do tyłu przez plik /var/log/wtmp (lub plik przeznaczony przez opcję –f) i wyświetla listę wszystkich użytkowników, którzy zalogowali się (lub wylogowali) od czasu, gdy dany plik został tworzony.

Można określić nazwy użytkowników u nazwy tty, aby tylko pokazać informacje dla tych wpisów.

Można użyć opcji takich jak –num (gdzie num jest liczbą linii do wyświetlenia), -a (wyświetla nazwę hosta w ostatniej kolumnie), i –x (wyświetla wpisy zamknięcia SO i zmiany runleveli).

Np. wprowadzając last –ax zwraca informację:

da10:~ # last –ax

tomasz pts/3 Wed May 24 13:55 still logged in

tomasz pts/1 Wed May 24 13:54 still logged in

tomasz :0 Wed May 24 13:54 still logged in

tomasz :0 Wed May 24 13:45 – 13:53 (00:08)

root pts/0 Wed May 24 10:33 still logged in da1.digitalairlin

runlevel (to lvl 5) Wed May 24 10:31 – 15:09 (04:37) 2.6.16.14-6-smp

reboot system boot Wed May 24 10:31 (04:38) 2.6.16.14-6-smp

shutdown system down Tue May 23 17:30 – 15:09 (21:39) 2.6.16.14-6-smp

lastlog– to polecenie formatuje i drukuje zawartość ostatniego pliku logowania loginu (/var/log/lastlog). Nazwa loginu, port i czas ostatniego loginu są wyświetlane. Wprowadzanie polecenia bez opcji wyświetla wpisy sortowane przez numeryczne ID. Można użyć opcji takich jak –u login_name (wyświetla informację tylko dla wyznaczonego użytkownika) i –h (wyświetla jednoliniową wiadomość o pomocy).

Jeśli użytkownik nigdy nie logował się, wiadomość **Never logged in** jest wyświetlana w miejsce portu i czasu.

Wprowadzając lastlog mamy zwrot informacji:

da10:~ # lastlog

Username Port Latest

at **Never logged in**

bin **Never logged in**

root pts/0 Wed May 24 10:33:36 +0200 2006

sshd **Never logged in**

suse-ncc **Never logged in**

uucp **Never logged in**

wwwrun **Never logged in**

tomasz :0 Wed May 24 13:54:29 +0200 2006

faillog– to polecenie formatuje i wyświetla zawartość nieudanego logu (/var/log/faillog) i utrzymuje nieudane konta i ograniczenia. Funkcjonalność faillog musi być włączona przez dodanie modułu pam_tally.so, aby odpowiedni plik w /tec/pam.d/, np. /etc/pam.d/login:

# %PAM-1.0

auth required pam_securetty.so

auth required pam_tally.so no_magic_root per_user

auth include common-auth

auth required pam_nologin.so

account required pam_tally.so no_magic_root

Reszta pliku nie musi być zmieniona.

Jeśli chcemy mieć też tę funkcjonalność z graficznym loginem, dodajemy nad linią do /etc/pam.d/xdm i (lub) /etc/pam.d/gdm, zależnie od tego, jakiego menadżera loginu używamy.

Można użyć opcji takich jak –u login_name (wyświetla informacje tylko dla przeznaczonego użytkownika) i –p (wyświetla w porządku UID).

Polecenie faillog tylko pokazuje użytkowników bez udanego loginu od ostatniego nieudanego. Aby pokazać użytkownika, który nie miał udanego loginu od ostatniego nieudanego, musimy jawnie żądać użytkownika z opcją –u.

Wprowadzając zwrot informacji faillog:

da10:~ # faillog

Login Failures Maximum Latest On

tomasz 1 3 05/24/06 15:39:35 +0200 /dev/tty2

Polecenie faillog jest też użyte do wyznaczania ograniczeń dla nieudanych logów:

faillog –m 3

ustawia limit do trzech nieudanych logowań dla wszystkich użytkowników. Aby zapobiec wykluczeniu roota, trzeba upewnić się, że nia ma ograniczeń dla root:

faillog –u root –m 0

sekwencja opcji jest istotna: faillog –m0 –u root usuwa ograniczenie dla all users, nie dla root.

Aby znowu przydzielić dostęp dla użytkownika, który ma więcej nieudanych logowań niż limit, wprowadzamy

faillog –r user

pisanie logów (logowanie) w rodzajach:

– każdy daemon musi prowadzić swoje logi

– daemony wysyłają logi do daemona logów

w SO daemony logowania są różne, wrzucają do /dev i dalej daemon logowania bierze je

PROGRAMY UŻYTKOWE MONITORUJĄCE SO

Wiele procesów programów i mechanizmów mogą być uzyte do badania stanu naszego SO. Też opisane są programy użytkowe, które są pozyteczne dla rutynowej pracy razem z najważniejszymi parametrami.

Dla każdego wprowadzonego polecenia przykłady związanych danych wyjściowych są prezentowane. W tych przykładach pierwszą linią jest same polecenie (po > lub znaku zachęty #). Pominięcia są wskazane z nawiasami kwadratowymi ([…]) i długie linie są zawijane, jesli trzeba. Urwanie linii dla długich linii jest wskazane przez backslash (\).

# command -x -y

output line 1

output line 2

output line 3 is annoyingly long, so long that \

we have to break it

output line 3

[…]

output line 98

output line 99

Opisy są krótkie, aby pozwalić tak wielu jak to możliwe do wymienienia. Dalsze informacje dla wszystkich poleceń mogą być znalezione na man pages. Większość poleceń też rozumie parametr –help, który dostarcza krótkiej listy dostępnych parametrów.

Debugowanie

Określanie Required Library: ldd

Uzywamy polecenia

ldd

dla dowiedzienia się, które biblioteki załadowałyby dynamicznie, wykonywalnie określone jako argument.

zacker@linux:~> ldd /bin/ls

linux-gate.so.1 => (0xffffe000)

librt.so.1 => /lib/librt.so.1 (0xb7f97000)

libacl.so.1 => /lib/libacl.so.1 (0xb7f91000)

libc.so.6 => /lib/libc.so.6 (0xb7e79000)

libpthread.so.0 => /lib/libpthread.so.0 (0xb7e67000)

/lib/ld-linux.so.2 (0xb7fb6000)

libattr.so.1 => /lib/libattr.so.1 (0xb7e63000)

Binaria statyczne nie potrzebują żadnych dynamicznych bibliotek.

zacker@linux:~> ldd /bin/sash

not a dynamic executable

zacker@linux:~> file /bin/sash

/bin/sash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for

GNU/Linux 2.6.4, statically linked, for GNU/Linux 2.6.4, stripped

Zawołania biblioteki działającego programu: ltrace

Polecenie

ltrace

umozliwia nam wytropienie zawołań biblioteki procesu. To polecenie jest używane w podobny sposób do strace. Parametr –c w danych wyjściowych daje numer i trwanie biblioteki zawołań biblioteki, które się przydarzyło:

zacker@linux:~> ltrace -c find ~

% time seconds usecs/call calls function

—— ———– ———– ——— ——————–

34.37 6.758937 245 27554 __errno_location

33.53 6.593562 788 8358 __fprintf_chk

12.67 2.490392 144 17212 strlen

11.97 2.353302 239 9845 readdir64

2.37 0.466754 27 16716 __ctype_get_mb_cur_max

1.18 0.231189 27 8531 strcpy

1.17 0.230765 27 8358 memcpy

[…]

0.00 0.000036 36 1 textdomain

324 Installation and Administration

—— ———– ———– ——— ——————–

100.00 19.662715 105717 total

zawołani systemu programu działającego: strace

Program użytkowy strace umożliwia nam wytropienie wszystkich zawołań SO bieżąco działającego procesu. Wprowadzamy polecenie w normalny sposób, dodając strace na początku linii:

zacker@linux:~> strace ls

execve(“/bin/ls”, [“ls”], [/* 61 vars */]) = 0

uname({sys=”Linux”, node=”linux”, …}) = 0

brk(0) = 0x805c000

access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or \

directory)

open(“/etc/ld.so.cache”, O_RDONLY) = 3

fstat64(3, {st_mode=S_IFREG|0644, st_size=89696, …}) = 0

mmap2(NULL, 89696, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ef2000

close(3) = 0

open(“/lib/librt.so.1”, O_RDONLY) = 3

read(3, “\177ELF\1\1\1\3\3\1000\36″…, 512) \

= 512

fstat64(3, {st_mode=S_IFREG|0755, st_size=36659, …}) = 0

[…]

stat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), …}) = 0

mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) \

= 0xb7ca7000

write(1, “bin Desktop Documents music\tM”…, 55bin Desktop Documents \

\ music Music public_html tmp

) = 55

close(1) = 0

munmap(0xb7ca7000, 4096) = 0

exit_group(0) = ?

Np. dla wytropienia wszsytkich usiłowań otwarcia poszczególnego pliku, używamy:

zacker@linux:~> strace -e open ls .bashrc

open(“/etc/ld.so.cache”, O_RDONLY) = 3

open(“/lib/librt.so.1”, O_RDONLY) = 3

open(“/lib/libacl.so.1”, O_RDONLY) = 3

open(“/lib/libc.so.6”, O_RDONLY) = 3

open(“/lib/libpthread.so.0”, O_RDONLY) = 3

open(“/lib/libattr.so.1”, O_RDONLY) = 3

[…]

Aby wyśledzić wszystkie procesy child używamy parametru –f. Zachowanie i format danych wyjściowych dla strace może być w większości kontrolowany. Dla informacji patrzymy man strace.

Pliki i systemy plików

Ustalenie typu pliku: file

Polecenie

file

Ustala typ pliku lub listy plików przez sprawdzenie /etc/magic.

zacker@linux:~> file /usr/bin/file

/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), \

for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

Parametr –f listuje plik z listą nazw plików do zbadania. Opcja –z pozwala plikowi przejrzeć skompresowane pliki:

zacker@linux:~> file /usr/share/man/man1/file.1.gz

usr/share/man/man1/file.1.gz: gzip compressed data, from Unix, max compression

zacker@linux:~> file -z /usr/share/man/man1/file.1.gz

/usr/share/man/man1/file.1.gz: ASCII troff or preprocessor input text \

(gzip compressed data, from Unix, max compression)

Systemy plików i ich użycie: mount, df i du

Polecenie

mount

pokazuje, który system plików (urządzenie lub typ) jesy podmontowany przy jakim punkcie:

zacker@linux:~> mount

/dev/hda3 on / type reiserfs (rw,acl,user_xattr)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

udev on /dev type tmpfs (rw)

devpts on /dev/pts type devpts (rw,mode=0620,gid=5)

/dev/hda1 on /boot type ext2 (rw,acl,user_xattr)

/dev/hda4 on /local type reiserfs (rw,acl,user_xattr)

/dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,noatime,fs=floppyfss,p

Otrzymujemy informację o totalnym użyciu systemów plików z poleceniem

df

Parametr –h (lub –human-readable) przekształca dane wyjściowe w formę zrozumiałą dla człowieka:

zacker@linux:~> df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda3 11G 3.2G 6.9G 32% /

udev 252M 104K 252M 1% /dev

/dev/hda1 16M 6.6M 7.8M 46% /boot

/dev/hda4 27G 34M 27G 1% /local

Wyświetla cały rozmiar wszystkich plików w danym katalogu i jego podkatalogi z poleceniem

du

Parametr –s ukrywa dane wyjściowe szczegółowej informacji. Opcja –h znowu przekształca dane w forme odczytywalną dla człowieka:

zacker@linux:~> du -sh /local

1.7M /local

Dodatkowe informacje o binariach ELF

Czytamy zawartość binariów przy pomocy programu użytkowego readelf. To nawet pracuje z plikami elf, które były zbudowane dla innej architektury hardware:

zacker@linux:~> readelf –file-header /bin/ls

ELF Header:

Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00

Class: ELF32

Data: 2’s complement, little endian

Version: 1 (current)

OS/ABI: UNIX – System V

ABI Version: 0

Type: EXEC (Executable file)

Machine: Intel 80386

Version: 0x1

Entry point address: 0x8049b60

Start of program headers: 52 (bytes into file)

Start of section headers: 81112 (bytes into file)

Flags: 0x0

Size of this header: 52 (bytes)

Size of program headers: 32 (bytes)

Number of program headers: 9

Size of section headers: 40 (bytes)

Number of section headers: 30

Section header string table index: 29

Właściwości pliku: stat

Polecenie

stat

wyświetla właściwości:

zacker@linux:~> stat /etc/profile

File: `/etc/profile’

Size: 7930 Blocks: 16 IO Block: 4096 regular file

System Monitoring Utilities 327

Device: 303h/771d Inode: 40657 Links: 1

Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2006-01-06 16:45:43.000000000 +0100

Modify: 2005-11-21 14:54:35.000000000 +0100

Change: 2005-12-19 09:51:04.000000000 +0100

Parametr –filesystem oddaje szczegóły właściwości systemu plików, w którym dany plik jest zlokalizowany:

zacker@linux:~> stat /etc/profile –filesystem

File: “/etc/profile”

ID: 0 Namelen: 255 Type: reiserfs

Block size: 4096 Fundamental block size: 4096

Blocks: Total: 2622526 Free: 1809771 Available: 1809771

Inodes: Total: 0 Free: 0

Informacja hardware

Zasoby PCI: lspci

Polecenie

lspci

listuje zasoby PCI:

linux:~ # lspci

00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \

DRAM Controller/Host-Hub Interface (rev 01)

00:01.0 PCI bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \

Host-to-AGP Bridge (rev 01)

00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM \

(ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)

00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM \

(ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)

00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM \

(ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)

00:1d.7 USB Controller: Intel Corporation 82801DB/DBM \

(ICH4/ICH4-M) USB2 EHCI Controller (rev 01)

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 81)

00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) \

LPC Interface Bridge (rev 01)

00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE \

Controller (rev 01)

00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) \

SMBus Controller (rev 01)

00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM \

(ICH4/ICH4-L/ICH4-M) AC’97 Audio Controller (rev 01)

01:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 85)

02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (LOM) \

Ethernet Controller (rev 81)

Używając opcji –v mamy bardziej szczegółowe listowanie:

linux:~ # lspci

[…]

02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (LOM)\

Ethernet Controller (rev 81)

Subsystem: Fujitsu Siemens Computer GmbH: Unknown device 1001

Flags: bus master, medium devsel, latency 66, IRQ 11

Memory at d1000000 (32-bit, non-prefetchable) [size=4K]

I/O ports at 3000 [size=64]

Capabilities: [dc] Power Management version 2

Informacje o rozdzieleniu nazwy urządzenia jest otrzymywana z pliku /usr/share/pci.ids. ID nielistowane w tym pliku jest oznaczane “Unknown device.”

Parametr –vv daje całą informację, która może być zapytana przez program. Aby zobaczyć czysto numeryczne wartości, używamy parametru –n.

Urządzenia USB: lsusb

Polecenie

lsusb listuje wszystkie urzadzenia USB. Z opcją –v wyświetla bardziej szczegółową listę. Szczegółowa informacja jest odczytywana z katalogu /proc/bus/usb/. Dane wyjściowe lsusb z dołączonymi tymi urządzeniami USB: hub, pamięć USB, twardy dysk i mysz.

linux:/ # lsusb

Bus 004 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash \

2.0 / Astone USB Drive

Bus 004 Device 006: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE \

Adapter

Bus 004 Device 005: ID 05e3:0605 Genesys Logic, Inc.

Bus 004 Device 001: ID 0000:0000

Bus 003 Device 001: ID 0000:0000

Bus 002 Device 001: ID 0000:0000

Bus 001 Device 005: ID 046d:c012 Logitech, Inc. Optical Mouse

Bus 001 Device 001: ID 0000:0000

Informacje o Urządzeniu SCSI:scsiinfo

Polecenie

scsiinfo

listuje informacje o urządzeniu SCSI. Z opcja –l listuje wszystkie urządzenia SCSI znane dla SO (podobna informacja jest otrzymywana przez polecenie lsscsi). Dane wyjściowe dla

scsiinfo –i /dev/sda

które daje informacje o twardym dysku. Opcja –a daje nawet większą informację.

linux:/ # scsiinfo -i /dev/sda

Inquiry command

—————

Relative Address 0

Wide bus 32 0

Wide bus 16 1

Synchronous neg. 1

Linked Commands 1

Command Queueing 1

SftRe 0

Device Type 0

Peripheral Qualifier 0

Removable? 0

Device Type Modifier 0

ISO Version 0

ECMA Version 0

ANSI Version 3

AENC 0

TrmIOP 0

Response Data Format 2

Vendor: FUJITSU

Product: MAS3367NP

Revision level: 0104A0K7P43002BE

Opcja –d listuje defekty z dwoma tablicami złych bloków twardego dysku: pierwszy dostarczony przez sprzedawcę (manufacturer table) i drugi listuje złe bloki, które pojawiły się w operacji (grown table). Jeśli liczba wpisów w grown table wzrasta, może być dobrym pomysłem zastąpić dysk twardy.

Praca w sieci

Pokazuje stan sieci: netstat

netstat pokazuje połączenia, tablice routingu (-r), interfejsy (-i), maskowane połączenia (-M), członkowstwo multicast (-g) i statystyki (-s).

zacker@linux:~> netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

192.168.22.0 * 255.255.254.0 U 0 0 0 eth0

link-local * 255.255.0.0 U 0 0 0 eth0

loopback * 255.0.0.0 U 0 0 0 lo

default 192.168.22.254 0.0.0.0 UG 0 0 0 eth0

zacker@linux:~> netstat -i

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1500 0 1624507 129056 0 0 7055 0 0 0 BMNRU

lo 16436 0 23728 0 0 0 23728 0 0 0 LRU

Kiedy wyświetlamy połączenia sieciowe lub statystyki, możemy okreslić typ socketu dla wyświetlenia: TCP (-t), UDP (-u) lub surowy (-r). Opcja –p pokazuje PID i nazwę programu, do którego każdy socket należy.

Poniższy przykład listuje połączenia TCP i programy używające te połączenia:

linux:~ # netstat -t -p

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Pro

tcp 0 0 linux:33513 http://www.novell.com:www-http ESTABLISHED 6862/fi

tcp 0 352 linux:ssh linux2.:trc-netpoll ESTABLISHED 19422/s

tcp 0 0 localhost:ssh localhost:17828 ESTABLISHED –

W poniższej statystyce dla protokołu TCP jest wyświetlane:

zacker@linux:~> netstat -s -t

Tcp:

2427 active connections openings

2374 passive connection openings

0 failed connection attempts

0 connection resets received

1 connections established

27476 segments received

26786 segments send out

54 segments retransmited

0 bad segments received.

6 resets sent

[…]

TCPAbortOnLinger: 0

TCPAbortFailed: 0

TCPMemoryPressures: 0

System Plików /proc

System plików /proc jest tak naprawdę pseudo systemem plików, gdzie kernel rezerwuje ważne ważne informacje w formie plików wirtualnych. Np. wyświetla typ CPU z poleceniem:

zacker@linux:~> cat /proc/cpuinfo

processor : 0

System Monitoring Utilities 331

vendor_id : AuthenticAMD

cpu family : 6

model : 8

model name : AMD Athlon(tm) XP 2400+

stepping : 1

cpu MHz : 2009.343

cache size : 256 KB

fdiv_bug : no

[…]

Zapytanie o allokację i użycie przerywań z poleceniem:

zacker@linux:~> cat /proc/interrupts

CPU0

0: 3577519 XT-PIC timer

1: 130 XT-PIC i8042

2: 0 XT-PIC cascade

5: 564535 XT-PIC Intel 82801DB-ICH4

7: 1 XT-PIC parport0

8: 2 XT-PIC rtc

9: 1 XT-PIC acpi, uhci_hcd:usb1, ehci_hcd:usb4

10: 0 XT-PIC uhci_hcd:usb3

11: 71772 XT-PIC uhci_hcd:usb2, eth0

12: 101150 XT-PIC i8042

14: 33146 XT-PIC ide0

15: 149202 XT-PIC ide1

NMI: 0

LOC: 0

ERR: 0

MIS: 0

Pewne z ważnych plików i ich zawartości są:

/proc/devices- dostępne urządzenia

/proc/modules- załadowane moduły kernela

/proc/cmdline- wiersz polecenia kernela

/proc/meminfo- szczegółowa informacja o użyciu pamięci

/proc/config.gz- skompresowany w gzip plik konfiguracyjny bieżąco działającego kernela

Dodatkowe informacje dostępne w pliku tekstowym

/usr/src/linux/Documentation/filesystems/proc.txt

Znalezienie informacji o procesach działających bieżąco w katalogach /proc/NNN, gdzie NNN jest numerem procesu (PID) stosownych procesów.

Każdy proces może znaleźć swoje własne cechy charakterystyczne w /proc/self/

:

zacker@linux:~> ls -l /proc/self

lrwxrwxrwx 1 root root 64 2006-01-09 13:03 /proc/self -> 5356

zacker@linux:~> ls -l /proc/self/

total 0

dr-xr-xr-x 2 zacker users 0 2006-01-09 17:04 attr

-r——– 1 zacker users 0 2006-01-09 17:04 auxv

-r–r–r– 1 zacker users 0 2006-01-09 17:04 cmdline

lrwxrwxrwx 1 zacker users 0 2006-01-09 17:04 cwd -> /home/zacker

-r——– 1 zacker users 0 2006-01-09 17:04 environ

lrwxrwxrwx 1 zacker users 0 2006-01-09 17:04 exe -> /bin/ls

dr-x—— 2 zacker users 0 2006-01-09 17:04 fd

-rw-r–r– 1 zacker users 0 2006-01-09 17:04 loginuid

-r–r–r– 1 zacker users 0 2006-01-09 17:04 maps

-rw——- 1 zacker users 0 2006-01-09 17:04 mem

-r–r–r– 1 zacker users 0 2006-01-09 17:04 mounts

-rw-r–r– 1 zacker users 0 2006-01-09 17:04 oom_adj

-r–r–r– 1 zacker users 0 2006-01-09 17:04 oom_score

lrwxrwxrwx 1 zacker users 0 2006-01-09 17:04 root -> /

-rw——- 1 zacker users 0 2006-01-09 17:04 seccomp

-r–r–r– 1 zacker users 0 2006-01-09 17:04 smaps

-r–r–r– 1 zacker users 0 2006-01-09 17:04 stat

-r–r–r– 1 zacker users 0 2006-01-09 17:04 statm

-r–r–r– 1 zacker users 0 2006-01-09 17:04 status

dr-xr-xr-x 3 zacker users 0 2006-01-09 17:04 task

-r–r–r– 1 zacker users 0 2006-01-09 17:04 wchan

Wyznaczenie adresu plików wykonywalnych i bibliotek jest zawarte w pliku maps:

zacker@linux:~> cat /proc/self/maps

08048000-0804c000 r-xp 00000000 03:03 17753 /bin/cat

0804c000-0804d000 rw-p 00004000 03:03 17753 /bin/cat

0804d000-0806e000 rw-p 0804d000 00:00 0 [heap]

b7d27000-b7d5a000 r–p 00000000 03:03 11867 /usr/lib/locale/en_GB.utf8/

b7d5a000-b7e32000 r–p 00000000 03:03 11868 /usr/lib/locale/en_GB.utf8/

b7e32000-b7e33000 rw-p b7e32000 00:00 0

b7e33000-b7f45000 r-xp 00000000 03:03 8837 /lib/libc-2.3.6.so

b7f45000-b7f46000 r–p 00112000 03:03 8837 /lib/libc-2.3.6.so

b7f46000-b7f48000 rw-p 00113000 03:03 8837 /lib/libc-2.3.6.so

b7f48000-b7f4c000 rw-p b7f48000 00:00 0

b7f52000-b7f53000 r–p 00000000 03:03 11842 /usr/lib/locale/en_GB.utf8/

[…]

b7f5b000-b7f61000 r–s 00000000 03:03 9109 /usr/lib/gconv/gconv-module

b7f61000-b7f62000 r–p 00000000 03:03 9720 /usr/lib/locale/en_GB.utf8/

b7f62000-b7f76000 r-xp 00000000 03:03 8828 /lib/ld-2.3.6.so

b7f76000-b7f78000 rw-p 00013000 03:03 8828 /lib/ld-2.3.6.so

bfd61000-bfd76000 rw-p bfd61000 00:00 0 [stack]

ffffe000-fffff000 —p 00000000 00:00 0 [vdso]

procinfo

Ważne informacje z systemu plików /proc jest streszczone przez polecenie procinfo:

zacker@linux:~> procinfo

Linux 2.6.15-rc5-git3-2-default (pagantempereta@buildhost) (gcc 4.1.0 20051129) #1 Wed

Memory: Total Used Free Shared Buffers

Mem: 515584 509472 6112 0 73024

Swap: 658656 0 658656

Bootup: Mon Jan 9 12:59:08 2006 Load average: 0.10 0.04 0.05 1/86 5406

user : 0:02:07.98 0.8% page in : 442638 disk 1: 20125r 134

nice : 0:02:20.91 0.9% page out: 134950

system: 0:00:42.93 0.3% page act: 70577

IOwait: 0:01:25.40 0.6% page dea: 11696

hw irq: 0:00:08.94 0.1% page flt: 1423622

sw irq: 0:00:01.29 0.0% swap in : 0

idle : 4:06:30.54 97.3% swap out: 0

uptime: 4:13:20.72 context : 3813145

irq 0: 3799268 timer irq 8: 2 rtc

irq 1: 130 i8042 irq 9: 1 acpi, uhci_hcd:usb

irq 2: 0 cascade [4] irq 10: 0 uhci_hcd:usb3

irq 3: 8 irq 11: 75905 uhci_hcd:usb2, eth

irq 4: 8 irq 12: 101150 i8042

irq 5: 564535 Intel 82801DB-ICH4 irq 14: 33733 ide0

irq 6: 9 irq 15: 157045 ide1

irq 7: 1 parport0 [3]

Aby zobaczyć całą informację używamy parametru –a. Parametr –nN daje uaktualnienie informacji co N sekund. W tej sytuacji zakończenie programu przez naciśnięcie Q. Domyślnie zbiorcze wartości są wyświetlane. Parametr –d daje zróżnicowane wartości. procinfo -dn5 wyświetla, które się zmieniły w ciągu ostatnich pięciu sekund:

Procesy

Międzyprocesowa komunikacja: ipcs

Polecenie ipcs daje listę bieżących zasobów IPC w użyciu:

—— Shared Memory Segments ——–

key shmid owner perms bytes nattch status

0x00000000 58261504 zacker 600 393216 2 dest

0x00000000 58294273 zacker 600 196608 2 dest

0x00000000 83886083 zacker 666 43264 2

0x00000000 83951622 zacker 666 192000 2

0x00000000 83984391 zacker 666 282464 2

0x00000000 84738056 root 644 151552 2 dest

—— Semaphore Arrays ——–

key semid owner perms nsems

0x4d038abf 0 zacker 600 8

—— Message Queues ——–

key msqid owner perms used-bytes messages

Lista procesów: ps

Polecenie ps daje listę procesów. Większość parametrów musi być napisana bez znaku minusa (-). W ps –help krótka pomoc lub man page dla rozszerzenia help.

Aby wylistować wszystkie procesy z użytkownikiem i informacjami wiersza polecenia używamy ps axu:

zacker@linux:~> ps axu

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 696 272 ? S 12:59 0:01 init [5]

root 2 0.0 0.0 0 0 ? SN 12:59 0:00 [ksoftirqd

root 3 0.0 0.0 0 0 ? S< 12:59 0:00 [events

[…]

zacker 4047 0.0 6.0 158548 31400 ? Ssl 13:02 0:06 mono-best

zacker 4057 0.0 0.7 9036 3684 ? Sl 13:02 0:00 /opt/gnome

zacker 4067 0.0 0.1 2204 636 ? S 13:02 0:00 /opt/gnome

zacker 4072 0.0 1.0 15996 5160 ? Ss 13:02 0:00 gnome-scre

zacker 4114 0.0 3.7 130988 19172 ? SLl 13:06 0:04 sound-juic

zacker 4818 0.0 0.3 4192 1812 pts/0 Ss 15:59 0:00 -bash

zacker 4959 0.0 0.1 2324 816 pts/0 R+ 16:17 0:00 ps axu

Aby sprawdzić jak wiele procesów sshd jest uruchomionych używamy opcji –p razem z poleceniem pidof, co listuje ID procesów danych procesów.

To check how many sshd processes are running, use the option -p together with the

command pidof, which lists the process IDs of the given processes.

zacker@linux:~> ps -p `pidof sshd`

PID TTY STAT TIME COMMAND

3524 ? Ss 0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid

4813 ? Ss 0:00 sshd: zacker [priv]

4817 ? R 0:00 sshd: zacker@pts/0

Lista procesu może być sformatowana zgodnie z naszymi potrzebami. Opcja –L listuje wszystkie słowa kluczowe. Wprowadzamy poniższe polecenie, aby wypuścić listę wszystkich procesów sortowanych pod względem zużycia pamięci:

zacker@linux:~> ps ax –format pid,rss,cmd –sort rss

PID RSS CMD

2 0 [ksoftirqd/0]

3 0 [events/0]

4 0 [khelper]

5 0 [kthread]

11 0 [kblockd/0]

12 0 [kacpid]

472 0 [pdflush]

473 0 [pdflush]

[…]

4028 17556 nautilus –no-default-window –sm-client-id default2

4118 17800 ksnapshot

4114 19172 sound-juicer

4023 25144 gnome-panel –sm-client-id default1

4047 31400 mono-best –debug /usr/lib/beagle/Best.exe –autostarted

3973 31520 mono-beagled –debug /usr/lib/beagle/BeagleDaemon.exe –bg –aut

Drzewo procesów: pstree

Polecenie pstree daje listę procesów w formie drzewa:

zacker@linux:~> pstree

init-+-NetworkManagerD

|-acpid

|-3*[automount]

|-cron

|-cupsd

|-2*[dbus-daemon]

|-dbus-launch

|-dcopserver

|-dhcpcd

|-events/0

|-gpg-agent

|-hald-+-hald-addon-acpi

| `-hald-addon-stor

|-kded

|-kdeinit-+-kdesu—su—kdesu_stub—yast2—y2controlcenter

| |-kio_file

| |-klauncher

| |-konqueror

| |-konsole-+-bash—su—bash

| | `-bash

| `-kwin

|-kdesktop—kdesktop_lock—xmatrix

|-kdesud

|-kdm-+-X

| `-kdm—startkde—kwrapper

[…]

Parametr –p dodaje ID procesu do danej nazwy. Aby mieć też wyświetlony wiersz polecenia, używamy parametru –a:

Procesy: top

Polecenie top, które jest za “table of processes,” wyświetla listę procesów, które są odświeżane co dwie sekundy. Aby zakończyć, naciskamy Q. Parametr –n 1 kończy program po pojedynczym wyświetleniu listy procesów. Przykład danych wyjściowych polecenia –n 1:

zacker@linux:~> top -n 1

top – 17:06:28 up 2:10, 5 users, load average: 0.00, 0.00, 0.00

Tasks: 85 total, 1 running, 83 sleeping, 1 stopped, 0 zombie

Cpu(s): 5.5% us, 0.8% sy, 0.8% ni, 91.9% id, 1.0% wa, 0.0% hi, 0.0% si

Mem: 515584k total, 506468k used, 9116k free, 66324k buffers

Swap: 658656k total, 0k used, 658656k free, 353328k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

1 root 16 0 700 272 236 S 0.0 0.1 0:01.33 init

2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

3 root 10 -5 0 0 0 S 0.0 0.0 0:00.27 events/0

4 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 khelper

5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread

11 root 10 -5 0 0 0 S 0.0 0.0 0:00.05 kblockd/0

12 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid

472 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush

473 root 15 0 0 0 0 S 0.0 0.0 0:00.06 pdflush

475 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0

474 root 15 0 0 0 0 S 0.0 0.0 0:00.07 kswapd0

681 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 kseriod

839 root 10 -5 0 0 0 S 0.0 0.0 0:00.02 reiserfs/0

923 root 13 -4 1712 552 344 S 0.0 0.1 0:00.67 udevd

1343 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd

1587 root 20 0 0 0 0 S 0.0 0.0 0:00.00 shpchpd_event

1746 root 15 0 0 0 0 S 0.0 0.0 0:00.00 w1_control

1752 root 15 0 0 0 0 S 0.0 0.0 0:00.00 w1_bus_master1

2151 root 16 0 1464 496 416 S 0.0 0.1 0:00.00 acpid

2165 messageb 16 0 3340 1048 792 S 0.0 0.2 0:00.64 dbus-daemon

2166 root 15 0 1840 752 556 S 0.0 0.1 0:00.01 syslog-ng

2171 root 16 0 1600 516 320 S 0.0 0.1 0:00.00 klogd

2235 root 15 0 1736 800 652 S 0.0 0.2 0:00.10 resmgrd

2289 root 16 0 4192 2852 1444 S 0.0 0.6 0:02.05 hald

2403 root 23 0 1756 600 524 S 0.0 0.1 0:00.00 hald-addon-acpi

2709 root 19 0 2668 1076 944 S 0.0 0.2 0:00.00 NetworkManagerD

2714 root 16 0 1756 648 564 S 0.0 0.1 0:00.56 hald-addon-stor

Jeśli naciśniemy klawisz F, kiedy top jest uruchomiony, otwiera się menu z którym robimy szczegółowe zmiany w formacie danych wyjściowych.

Parametr -U UID monitoruje tylko procesy skojarzone z poszczególnym użytkownikiem. Zastępujemy UID przez ID użytkownika danego użytkownika. top –U `id -u` zwraca UID użytkownika na bazie nazwy użytkownika i wyświetla jego procesy.

Informacje systemowe

System Activity Information: sar

Aby użyć sar, sadc (system activity data collector) musi być uruchomiony. Sprawdzamy jego san lub startujemy to przez rcsysstat {start|status}.

sar może generować szczegółowe raporty dla prawie wszystkich aktywności SO, m.in. CPU, pamięci, IRQ, IO lub pracy w sieci. Ma wiele opcji, które patrzymy na stronach man pages.

Użycie pamięci: free

Program użytkowy free bada użycie RAM. Szczegóły zarówno wolnej jak i zajętej pamięci i obszar swap. Jest to nieco mylące, jesli chcemy wiedzieć ile jest w danej chwili uzywanej RAM. Te informacje można znaleźć w /proc/meminfo. Teraz o to nie trzeba siemartwić, bo są nowoczesne SOs. Wolna pamięć źle sie odnosi do Linuxa. W rezultacie Linux zawsze balansuje caches bez uwzględniania wolnej i nieużywanje pamięci. Zasadniczo kernel nie ma bezpośredniej wiedzy o danych aplikacji i uzytkownika. Zamiast tego zarządza danymi aplikacji i uzytkownika w page cache. Jeśli kończy się pamięć, części tego są zapisywane do partycji swap lub do plików, z których możemy początkowo je odczytywać z pomocą polecenia mmap (man mmap).

Kernel też zawiera caches takie jak slab cache, gdzie są gromadzone caches używane do dostępu do sieci. To może wyjasniać róznice między licznikami /proc/meminfo. Większość, ale nie wszystkie, moga byćdostępne przez /proc/slabinfo.

zacker@linux:~> free

total used free shared buffers cached

Mem: 515584 501704 13880 0 73040 334592

-/+ buffers/cache: 94072 421512

Swap: 658656 0 658656

Opcje -b,-k,-m,-g pokazują kolejno w bajtach (KB, MB, lub GB). Parametr –d (delay) zapewnia, że dane wyjściowse są odświeżane co ileś tam sekund. Np.

free -d 1.5

daje uaktualnienie co każde 1.5 sekundy.

Pliki dostępu użytkownika: fuser

Może być użyteczne ustalenie, do jakich procesów lub jacy użytkownicy mają dostęp do jakich plików. Przypuśćmy np., że chcemy odmontować system plików zamontowany przy /mnt. Umount zwraca, że “device is busy.” Polecenie fuser może wobec tego być użyte do ustalenia, jakie procesy mają dostęp do urządzenia:

zacker@linux:~> fuser -v /mnt/*

USER PID ACCESS COMMAND

/mnt/notes.txt zacker 26597 f…. less

FUSER(1) User Commands FUSER(1)

NAME

fuser – identify processes using files or sockets

SYNOPSIS

fuser [-a|-s|-c] [-4|-6] [-n space ] [-k [-i] [-w] [-signal ] ]

[-muvf] name …

fuser -l

fuser -V

DESCRIPTION

fuser displays the PIDs of processes using the specified files or file

systems. In the default display mode, each file name is followed by a

letter denoting the type of access:

c current directory.

e executable being run.

f open file. f is omitted in default display mode.

F open file for writing. F is omitted in default display

mode.

r root directory.

m mmap’ed file or shared library.

fuser returns a non-zero return code if none of the specified files is

accessed or in case of a fatal error. If at least one access has been

found, fuser returns zero.

In order to look up processes using TCP and UDP sockets, the corre-

sponding name space has to be selected with the -n option. By default

fuser will look in both IPv6 and IPv4 sockets. To change the default,

behavior, use the -4 and -6 options. The socket(s) can be specified by

the local and remote port, and the remote address. All fields are

optional, but commas in front of missing fields must be present:

[lcl_port][,[rmt_host][,[rmt_port]]]

Either symbolic or numeric values can be used for IP addresses and port

numbers.

fuser outputs only the PIDs to stdout, everything else is sent to

stderr.

OPTIONS

-a Show all files specified on the command line. By default, only

files that are accessed by at least one process are shown.

-c Same as -m option, used for POSIX compatibility.

-f Silently ignored, used for POSIX compatibility.

-k Kill processes accessing the file. Unless changed with -signal,

SIGKILL is sent. An fuser process never kills itself, but may

kill other fuser processes. The effective user ID of the process

executing fuser is set to its real user ID before attempting to

kill.

-i Ask the user for confirmation before killing a process. This

option is silently ignored if -k is not present too.

-w Kill only processes which have write access. This option is

silently ignored if -k is not present too.

-l List all known signal names.

-m name specifies a file on a mounted file system or a block device

that is mounted. All processes accessing files on that file sys-

tem are listed. If a directory file is specified, it is auto-

matically changed to name/. To use any file system that might be

mounted on that directory. Please note that due the required

device ID comparision all mounted file systems the stat(2) sys-

tem call will applied to every file system even on network file

system (NFS). If the NFS server does not respond or the network

is down the stat(2) may hang forever.

-n space

Select a different name space. The name spaces file (file names,

the default), udp (local UDP ports), and tcp (local TCP ports)

are supported. For ports, either the port number or the symbolic

name can be specified. If there is no ambiguity, the shortcut

notation name/Ispace (e.g. 80/tcp ) can be used.

-s Silent operation. -u and -v are ignored in this mode. -a must

not be used with -s.

-signal

Use the specified signal instead of SIGKILL when killing pro-

cesses. Signals can be specified either by name (e.g. -HUP) or

by number (e.g. -1). This option is silently ignored if the -k

option is not used.

-u Append the user name of the process owner to each PID.

-v Verbose mode. Processes are shown in a ps-like style. The fields

PID, USER and COMMAND are similar to ps. ACCESS shows how the

process accesses the file. If the access is by the kernel (e.g.

in the case of a mount point, a swap file, etc.), kernel is

shown instead of the PID.

-V Display version information.

-4 Search only for IPv4 sockets. This option must not be used with

the -6 option and only has an effect with the tcp and udp names-

paces.

-6 Search only for IPv6 sockets. This option must not be used with

the -4 option and only has an effect with the tcp and udp names-

paces.

– Reset all options and set the signal back to SIGKILL.

FILES

/proc location of the proc file system

EXAMPLES

fuser -km /home kills all processes accessing the file system /home in

any way.

if fuser -s /dev/ttyS1; then :; else something; fi invokes something if

no other process is using /dev/ttyS1.

fuser telnet/tcp shows all processes at the (local) TELNET port.

RESTRICTIONS

Processes accessing the same file or file system several times in the

same way are only shown once.

If the same object is specified several times on the command line, some

of those entries may be ignored.

fuser may only be able to gather partial information unless run with

privileges. As a consequence, files opened by processes belonging to

other users may not be listed and executables may be classified as

mapped only.

Installing fuser SUID root will avoid problems associated with partial

information, but may be undesirable for security and privacy reasons.

udp and tcp name spaces, and UNIX domain sockets can’t be searched with

kernels older than 1.3.78.

udp and tcp currently work with IPv6 and IPv4, but the address fields

can only be IPv4 addresses.

Accesses by the kernel are only shown with the -v option.

The -k option only works on processes. If the user is the kernel, fuser

will print an advice, but take no action beyond that.

BUGS

fuser -m /dev/sgX will show (or kill with the -k flag) all processes,

even if you don’t have that device configured. There may be other

devices it does this for too.

fuser -m name may hang forever if there are NFS file systems mounted

and one of the NFS servers do not respond or the corresponding network

is down.

fuser cannot report on any processes that it doesn’t have permission to

look at the file descriptor table for. The most common time this prob-

lem occurs is when looking for TCP or UDP sockets when running fuser as

a non-root user. In this case fuser will report no access

AUTHORS

Werner Almesberger <werner@almesberger.net>

Craig Small <csmall@small.dropbear.id.au>

SEE ALSO

kill(1), killall(1), lsof(8), ps(1), kill(2).

Linux 2005-11-05 FUSER(1)

Idąc za zakończeniem procesu less, który działa na innym terminalu, system plików może być odmontowany z sukcesem.

Ring Buffer kernela: dmesg

Kernel Linuxa trzyma pewne wiadomości w ring buffer. Aby przejrzeć te wiadomości, wprowadzamy dmesg:

$ dmesg

[…]

end_request: I/O error, dev fd0, sector 0

subfs: unsuccessful attempt to mount media (256)

e100: eth0: e100_watchdog: link up, 100Mbps, half-duplex

NET: Registered protocol family 17

IA-32 Microcode Update Driver: v1.14 <tigran@veritas.com>

microcode: CPU0 updated from revision 0xe to 0x2e, date = 08112004

IA-32 Microcode Update Driver v1.14 unregistered

bootsplash: status on console 0 changed to on

NET: Registered protocol family 10

Disabled Privacy Extensions on device c0326ea0(lo)

IPv6 over IPv4 tunneling driver

powernow: This module only works with AMD K7 CPUs

bootsplash: status on console 0 changed to on

Starsze wydarzenia są logowane w plikach /var/log/messages i /var/log/warn.

Lista otwartych plików: lsof

Aby przejrzeć listę otwartych plików dla procesu z ID procesu (PID), używamy –p. Np., aby przejrzeć wszystkie pliki używane przez bieżący shell, wprowadzamy:

zacker@linux:~> lsof -p $$

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

bash 5552 zacker cwd DIR 3,3 1512 117619 /home/zacker

bash 5552 zacker rtd DIR 3,3 584 2 /

bash 5552 zacker txt REG 3,3 498816 13047 /bin/bash

bash 5552 zacker mem REG 0,0 0 [heap] (stat: No such

bash 5552 zacker mem REG 3,3 217016 115687 /var/run/nscd/passwd

bash 5552 zacker mem REG 3,3 208464 11867 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 882134 11868 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 1386997 8837 /lib/libc-2.3.6.so

bash 5552 zacker mem REG 3,3 13836 8843 /lib/libdl-2.3.6.so

bash 5552 zacker mem REG 3,3 290856 12204 /lib/libncurses.so.5.5

bash 5552 zacker mem REG 3,3 26936 13004 /lib/libhistory.so.5.1

bash 5552 zacker mem REG 3,3 190200 13006 /lib/libreadline.so.5.

bash 5552 zacker mem REG 3,3 54 11842 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 2375 11663 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 290 11736 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 52 11831 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 34 11862 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 62 11839 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 127 11664 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 56 11735 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 23 11866 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 21544 9109 /usr/lib/gconv/gconv-m

bash 5552 zacker mem REG 3,3 366 9720 /usr/lib/locale/en_GB.

bash 5552 zacker mem REG 3,3 97165 8828 /lib/ld-2.3.6.so

bash 5552 zacker 0u CHR 136,5 7 /dev/pts/5

bash 5552 zacker 1u CHR 136,5 7 /dev/pts/5

bash 5552 zacker 2u CHR 136,5 7 /dev/pts/5

bash 5552 zacker 255u CHR 136,5 7 /dev/pts/5

Określona zmienna shell $$, której wartość jest ID procesu shella została użyta.

Polecenie lsof listuje wszystkie pliki aktualnie otwarte, kiedy używamy bez jakichkolwiek parametrów. Ponieważ jest zwykle tysiące otwartych plików listowanie wszystkich z nich jest rzadko użyteczne. Jednak lista wszystkich plików może być łączona z funkcjami wyszukiwania, aby generować użyteczne listy. Np. listuje wszystkie użyte właściwości urządzeń.

zacker@linux:~> lsof | grep CHR

bash 3838 zacker 0u CHR 136,0 2 /dev/pts/0

bash 3838 zacker 1u CHR 136,0 2 /dev/pts/0

bash 3838 zacker 2u CHR 136,0 2 /dev/pts/0

bash 3838 zacker 255u CHR 136,0 2 /dev/pts/0

bash 5552 zacker 0u CHR 136,5 7 /dev/pts/5

bash 5552 zacker 1u CHR 136,5 7 /dev/pts/5

bash 5552 zacker 2u CHR 136,5 7 /dev/pts/5

bash 5552 zacker 255u CHR 136,5 7 /dev/pts/5

X 5646 root mem CHR 1,1 1006 /dev/mem

lsof 5673 zacker 0u CHR 136,5 7 /dev/pts/5

lsof 5673 zacker 2u CHR 136,5 7 /dev/pts/5

grep 5674 zacker 1u CHR 136,5 7 /dev/pts/5

grep 5674 zacker 2u CHR 136,5 7 /dev/pts/5

Kernel i przegląd ciągu wydarzeń udev: udevmonitor

udevmonitor nasłuchuje kernela uevents i events wysłanych przez regułę udev i wyświetla ścieżkę urządzenia (DEVPATH) zdarzenia w konsoli. To jest ciąg zdarzeń podczas podłączenia pamięci USB:

UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2

UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2

UEVENT[1138806687] add@/class/scsi_host/host4

UEVENT[1138806687] add@/class/usb_device/usbdev4.10

UDEV [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2

UDEV [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2

UDEV [1138806687] add@/class/scsi_host/host4

UDEV [1138806687] add@/class/usb_device/usbdev4.10

UEVENT[1138806692] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2

UEVENT[1138806692] add@/block/sdb

UEVENT[1138806692] add@/class/scsi_generic/sg1

UEVENT[1138806692] add@/class/scsi_device/4:0:0:0

UDEV [1138806693] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2

UDEV [1138806693] add@/class/scsi_generic/sg1

UDEV [1138806693] add@/class/scsi_device/4:0:0:0

UDEV [1138806693] add@/block/sdb

UEVENT[1138806694] add@/block/sdb/sdb1

UDEV [1138806694] add@/block/sdb/sdb1

UEVENT[1138806694] mount@/block/sdb/sdb1

UEVENT[1138806697] umount@/block/sdb/sdb1

Serwer zasobów uzyty przez Klienta X11: xrestop

xrestop dostarcza statystyk dla każdego podłączonego zasobu po stronie serwera klienta X11. Dane wyjściowe są bardzo podobne do top:

xrestop – Display: localhost:0

Monitoring 40 clients. XErrors: 0

Pixmaps: 42013K total, Other: 206K total, All: 42219K total

System Monitoring Utilities 341

res-base Wins GCs Fnts Pxms Misc Pxm mem Other Total PID Identifier

3e00000 385 36 1 751 107 18161K 13K 18175K ? NOVELL: SU

4600000 391 122 1 1182 889 4566K 33K 4600K ? amaroK – S

1600000 35 11 0 76 142 3811K 4K 3816K ? KDE Deskto

3400000 52 31 1 69 74 2816K 4K 2820K ? Linux Shel

2c00000 50 25 1 43 50 2374K 3K 2378K ? Linux Shel

2e00000 50 10 1 36 42 2341K 3K 2344K ? Linux Shel

2600000 37 24 1 34 50 1772K 3K 1775K ? Root – Kon

4800000 37 24 1 34 49 1772K 3K 1775K ? Root – Kon

2a00000 209 33 1 323 238 1111K 12K 1123K ? Trekstor25

1800000 182 32 1 302 285 1039K 12K 1052K ? kicker

1400000 157 121 1 231 477 777K 18K 796K ? kwin

3c00000 175 36 1 248 168 510K 9K 520K ? de.comp.la

3a00000 326 42 1 579 444 486K 20K 506K ? [opensuse-

0a00000 85 38 1 317 224 102K 9K 111K ? Kopete

4e00000 25 17 1 60 66 63K 3K 66K ? YaST Contr

2400000 11 10 0 56 51 53K 1K 55K 22061 suseplugge

0e00000 20 12 1 50 92 50K 3K 54K 22016 kded

3200000 6 41 5 72 84 40K 8K 48K ? EMACS

2200000 54 9 1 30 31 42K 3K 45K ? SUSEWatche

4400000 2 11 1 30 34 34K 2K 36K 16489 kdesu

1a00000 255 7 0 42 11 19K 6K 26K ? KMix

3800000 2 14 1 34 37 21K 2K 24K 22242 knotify

1e00000 10 7 0 42 9 15K 624B 15K ? KPowersave

3600000 106 6 1 30 9 7K 3K 11K 22236 konqueror

2000000 10 5 0 21 34 9K 1K 10K ? klipper

3000000 21 7 0 11 9 7K 888B 8K ? KDE Wallet

Informacje o użytkowniku

Kto co robi: w

Z poleceniem w dowiadujemy się kto jest zalogowany do SO i co każdy użytkownik robi. Np.:

zacker@linux:~> w

16:33:03 up 3:33, 2 users, load average: 0.14, 0.06, 0.02

USER TTY LOGIN@ IDLE JCPU PCPU WHAT

zacker :0 16:33 ?xdm? 9.42s 0.15s /bin/sh /opt/kde3/bin/startk

zacker pts/0 15:59 0.00s 0.19s 0.00s w

Jeśli jacykolwiek użytkownicy innych SO zalogowali się zdalnie, prametr –f pokazuje komputery z których oni uzyskali połączenie.

Czas i data

Pomiar czasu z time

Ustalenie spędzonego czasu przez polecenia z programem użytkowym time. Ten program użytkowy jest dostępny w dwóch wersjach: jako wbudowany w shell i jako program (/usr/bin/time).

zacker@linux:~> time find . > /dev/null

real 0m4.051s

user 0m0.042s

sys 0m0.205s

3 thoughts on “Monitorowanie systemu operacyjnego Linux — niezbędnik admina (z moich notatek)

  1. VPS giá rẻ | VPS gia re | VPS rẻ | VPS re | VPS rẻ nhất | VPS Việt Nam giá rẻ | VPS XEN giá rẻ | VPS OpenvZ giá rẻ | VPS Solus VM giá rẻ | Mua VPS ở đâu tốt | VPS Hosting | VPS Backup | VPS có backup | VPS miễn phí | Cheap

    hello there and thanks in your information ? I’ve certainly picked up anything new from right here. I did alternatively experience some technical issues the usage of this website, since I skilled to reload the website a lot of occasions prior to I could get it to load correctly. I have been considering in case your web hosting is OK? Not that I’m complaining, but sluggish loading circumstances instances will often have an effect on your placement in google and could harm your high quality ranking if ads and marketing with Adwords. Anyway I’m including this RSS to my email and could glance out for much extra of your respective exciting content. Ensure that you update this once more soon..

    Reply
    1. tomaszzackiewicz Post author

      Thanks! There are some problem with loading my website because there are a lot of heavy graphics. Maybe it should be lighter. However, it is not a problem for me.

      Reply

Leave a comment