4.3 Lekcija 2
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
4 Linux operativni sistem |
Cilj: |
4.3 Gdje su skladišteni podaci |
Lekcija: |
2 od 2 |
Uvod
Nakon istraživanja programa i njihovih konfiguracijskih datoteka, u ovoj lekciji ćemo naučiti kako se komande izvršavaju kao procesi. Isto tako, komentarisaćemo sistemsku razmjenu poruka, upotrebu bafera kernela i kako je dolazak systemd
i njegovog daemon dnevnika — journald
— promjenio načine na koje su stvari rađene do sada u vezi sa evidentiranjem sistema.
Procesi
Svaki put kada korisnik izda komandu, pokreće se program i generira se jedan ili više procesa.
Procesi postoje u hijerarhiji. Nakon što se kernel učita u memoriju pri pokretanju, pokreće se prvi proces koji — zauzvrat — pokreće druge procese, koji opet mogu pokrenuti druge procese. Svaki proces ima jedinstveni identifikator (PID
) i identifikator nadređenog procesa (PPID
). To su pozitivni cijeli brojevi koji se dodjeljuju uzastopnim redoslijedom.
Dinamičko istraživanje procesa: top
Možete prikazati dinamičku listu procesa upotrebom top
komande:
$ top top - 11:10:29 up 2:21, 1 user, load average: 0,11, 0,20, 0,14 Tasks: 73 total, 1 running, 72 sleeping, 0 stopped, 0 zombie %Cpu(s): 0,0 us, 0,3 sy, 0,0 ni, 99,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st KiB Mem : 1020332 total, 909492 free, 38796 used, 72044 buff/cache KiB Swap: 1046524 total, 1046524 free, 0 used. 873264 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 436 carol 20 0 42696 3624 3060 R 0,7 0,4 0:00.30 top 4 root 20 0 0 0 0 S 0,3 0,0 0:00.12 kworker/0:0 399 root 20 0 95204 6748 5780 S 0,3 0,7 0:00.22 sshd 1 root 20 0 56872 6596 5208 S 0,0 0,6 0:01.29 systemd 2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0,0 0,0 0:00.02 ksoftirqd/0 5 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kworker/u2:0 7 root 20 0 0 0 0 S 0,0 0,0 0:00.08 rcu_sched 8 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0,0 0,0 0:00.00 migration/0 10 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 lru-add-drain (...)
Kao što smo vidjeli gore, top
nam također može dati informacije o potrošnji memorije i CPU-a cjelokupnog sistema i svakog procesa.
top
omogućava korisniku interakciju.
Podrazumjevano, izlaz je sortiran prema procentu CPU vremena koje koristi svaki proces u opadajućem redosljedu. Ovo ponašanje se može izmijeniti pritiskom na sljedeće tipke unutar top
:
M
-
Sortira prema zauzeću memorije.
N
-
Sortira prema ID broju procesa.
T
-
Sortira prema vremenu.
P
-
Sortira prema procentu CPU upotrebe.
Za prebacivanje između silaznog/uzlaznog redoslijeda samo pritisnite R
.
Tip
|
Otmjenija i jednostavnija verzija |
Snimak procesa: ps
Još jedna vrlo korisna komanda za dobivanje informacija o procesima je ps
. Dok top
pruža dinamičke informacije, ps
je statičan.
Ako se poziva bez opcija, izlaz ps
je prilično diskretan i odnosi se samo na procese pokrenute u trenutnom šelu:
$ ps PID TTY TIME CMD 2318 pts/0 00:00:00 bash 2443 pts/0 00:00:00 ps
Prikazane informacije se odnose na identifikator procesa (PID
), terminal u kojem se proces pokreće (TTY
), CPU vrijeme potrebno za proces (TIME
) i komandu koja je pokrenula proces ( CMD
).
Koristan svič za ps
je -f
koji će prikazati listing u full formatu:
$ ps -f UID PID PPID C STIME TTY TIME CMD carol 2318 1682 0 08:38 pts/1 00:00:00 bash carol 2443 2318 0 08:46 pts/1 00:00:00 ps -f
U kombinaciji sa drugim svičevima, -f
će prikazati odnos između procesa roditelja i djeteta:
$ ps -uf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND carol 2318 0.0 0.1 21336 5140 pts/1 Ss 08:38 0:00 bash carol 2492 0.0 0.0 38304 3332 pts/1 R+ 08:51 0:00 \_ ps -uf carol 1780 0.0 0.1 21440 5412 pts/0 Ss 08:28 0:00 bash carol 2291 0.0 0.7 305352 28736 pts/0 Sl+ 08:35 0:00 \_ emacs index.en.adoc -nw (...)
Također, ps
će prikazati memorijsko zauzeće u procentima ukoliko se pozove sa -v
svičem:
$ ps -v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 1163 tty2 Ssl+ 0:00 1 67 201224 5576 0.1 /usr/lib/gdm3/gdm-x-session (...) (...)
Note
|
Još jedna vizuelno atraktivna komanda koja prikazuje hijerarhiju procesa je |
Proces informacije u /proc
direktoriju
Već smo vidjeli /proc
sistem datoteka. /proc
uključuje numerirani poddirektorij za svaki pokrenuti proces u sistemu (broj je PID
procesa):
carol@debian:~# ls /proc 1 108 13 17 21 27 354 41 665 8 9 10 109 14 173 22 28 355 42 7 804 915 103 11 140 18 23 29 356 428 749 810 918 104 111 148 181 24 3 367 432 75 811 105 112 149 19 244 349 370 433 768 83 106 115 15 195 25 350 371 5 797 838 107 12 16 2 26 353 404 507 798 899 (...)
Dakle, sve informacije o određenom procesu su uključene u njegovu direktoriju. Hajde da navedemo sadržaj prvog procesa — onog čiji je PID
1
(izlaz je skraćen radi čitljivosti):
# ls /proc/1/ attr cmdline environ io mem ns autogroup comm exe limits mountinfo numa_maps auxv coredump_filter fd loginuid mounts oom_adj ...
Možete provjeriti — na primjer — izvršnu datoteku procesa:
# cat /proc/1/cmdline; echo /sbin/init
Kao što vidite, binarna datoteka koja je započela hijerarhiju procesa je /sbin/init
.
Note
|
Komande se mogu povezati sa tačkom i zarezom ( |
Opterećenje sistema
Svaki proces na sistemu može potencijalno potrošiti sistemske resurse. Takozvano opterećenje sistema pokušava da agregira ukupno opterećenje sistema u jedan numerički indikator. Možete vidjeti trenutno opterećenje pomoću komande uptime
:
$ uptime 22:12:54 up 13 days, 20:26, 1 user, load average: 2.91, 1.59, 0.39
Tri posljednje cifre označavaju prosjek opterećenja sistema za posljednju minutu (2,91
), posljednjih pet minuta (1,59
) i posljednjih petnaest minuta (0,39
), respektivno.
Svaki od ovih brojeva pokazuje koliko je procesa čekalo da se dovrše CPU resursi ili ulazno/izlazne operacije. To znači da su ovi procesi bili spremni za pokretanje ako su dobili odgovarajuće resurse.
Sistemsko evidentiranje i sistemske poruke
Čim kernel i procesi počnu da se izvršavaju i komuniciraju jedni s drugima, proizvodi se mnogo informacija. Većina toga se šalje u datoteke — takozvane datoteke dnevnika ili, jednostavno, logs.
Bez evidentiranja, traženje događaja koji se desio na serveru bi sistemskim administratorima zadalo mnogo glavobolje, otuda je važno imati standardizovan i centralizovan način praćenja bilo kakvih sistemskih događaja. Osim toga, dnevnici su odlučujući i govore kada je u pitanju rješavanje problema i sigurnost, kao i pouzdani izvori podataka za razumijevanje sistemske statistike i predviđanja trendova.
Evidentiranje sa syslog daemonom
Tradicionalno, sistemskim porukama upravlja standardni alat za evidentiranje — syslog — ili bilo koji od njegovih derivata — syslog-ng ili rsyslog. Daemon za evidentiranje prikuplja poruke od drugih servisa i programa i pohranjuje ih u log datoteke, obično pod /var/log
. Međutim, neke usluge vode računa o vlastitim logovima (uzmite — na primjer — Apache HTTPD web server). Isto tako, Linux kernel koristi prstenasti bafer u memoriji za pohranjivanje svojih log poruka.
Log datoteke u /var/log
Budući da su logovi podaci koji se mijenjaju tokom vremena, oni se obično nalaze u /var/log
.
Ako istražite /var/log
, shvatit ćete da su imena logova - do određene mjere - sasvim razumljiva. Neki primjeri uključuju:
/var/log/auth.log
-
Sadrži informacije o autentikaciji.
/var/log/kern.log
-
Sadrži informacije o kernelu..
/var/log/syslog
-
Sadrži informacije o sistemu.
/var/log/messages
-
Sadrži informacije o sistemu i aplikacijama.
Note
|
Tačan naziv i sadržaj log datoteka može se razlikovati u različitim distribucijama Linuxa. |
Pristupanje log datotekama
Kada istražujete log datoteke, ne zaboravite da budete root (ako nemate dozvole za čitanje) i koristite pejdžer kao što je less
;
# less /var/log/messages Jun 4 18:22:48 debian liblogging-stdlog: [origin software="rsyslogd" swVersion="8.24.0" x-pid="285" x-info="http://www.rsyslog.com"] rsyslogd was HUPed Jun 29 16:57:10 debian kernel: [ 0.000000] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27) Jun 29 16:57:10 debian kernel: [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 root=/dev/sda1 ro quiet
Alternativno, možete koristiti tail
sa svičem -f
da pročitate najnovije poruke datoteke i dinamički prikazujete nove redove kako se isti dodaju:
# tail -f /var/log/messages Jul 9 18:39:37 debian kernel: [ 2.350572] RAPL PMU: hw unit of domain psys 2^-0 Joules Jul 9 18:39:37 debian kernel: [ 2.512802] input: VirtualBox USB Tablet as /devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1:1.0/0003:80EE:0021.0001/input/input7 Jul 9 18:39:37 debian kernel: [ 2.513861] Adding 1046524k swap on /dev/sda5. Priority:-1 extents:1 across:1046524k FS Jul 9 18:39:37 debian kernel: [ 2.519301] hid-generic 0003:80EE:0021.0001: input,hidraw0: USB HID v1.10 Mouse [VirtualBox USB Tablet] on usb-0000:00:06.0-1/input0 Jul 9 18:39:37 debian kernel: [ 2.623947] snd_intel8x0 0000:00:05.0: white list rate for 1028:0177 is 48000 Jul 9 18:39:37 debian kernel: [ 2.914805] IPv6: ADDRCONF(NETDEV_UP): enp0s3: link is not ready Jul 9 18:39:39 debian kernel: [ 4.937283] e1000: enp0s3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX Jul 9 18:39:39 debian kernel: [ 4.938493] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s3: link becomes ready Jul 9 18:39:40 debian kernel: [ 5.315603] random: crng init done Jul 9 18:39:40 debian kernel: [ 5.315608] random: 7 urandom warning(s) missed due to ratelimiting
Pronaći ćete izlaz u sljedećem obliku:
-
Vremenska oznaka
-
Ime hosta s kojeg je stigla poruka
-
Naziv programa/usluge koji je generisao poruku
-
PID programa koji je generisao poruku
-
Opis akcije koja se odigrala
Većina log datoteka je napisana u običnom tekstu; međutim, nekoliko može sadržavati binarne podatke kao što je slučaj sa /var/log/wtmp
— koji pohranjuje podatke relevantne za uspješne prijave. Možete koristiti komandu file
da odredite koji je slučaj:
$ file /var/log/wtmp /var/log/wtmp: dBase III DBT, version number 0, next free block index 8
Ove datoteke se obično čitaju pomoću posebnih komandi. last
se koristi za tumačenje podataka u /var/log/wtmp
:
$ last carol tty2 :0 Thu May 30 10:53 still logged in reboot system boot 4.9.0-9-amd64 Thu May 30 10:52 still running carol tty2 :0 Thu May 30 10:47 - crash (00:05) reboot system boot 4.9.0-9-amd64 Thu May 30 09:11 still running carol tty2 :0 Tue May 28 08:28 - 14:11 (05:42) reboot system boot 4.9.0-9-amd64 Tue May 28 08:27 - 14:11 (05:43) carol tty2 :0 Mon May 27 19:40 - 19:52 (00:11) reboot system boot 4.9.0-9-amd64 Mon May 27 19:38 - 19:52 (00:13) carol tty2 :0 Mon May 27 19:35 - down (00:03) reboot system boot 4.9.0-9-amd64 Mon May 27 19:34 - 19:38 (00:04)
Note
|
Slično |
Log rotacija
Log datoteke mogu znatno porasti tokom nekoliko sedmica ili mjeseci i zauzeti sav slobodan prostor na disku. Za rješavanje ovog problema koristi se uslužni program logrotate
. Implementira rotaciju loga, što podrazumijeva radnje kao što je premještanje log datoteka na novo ime, njihovo arhiviranje i/ili kompresovanje, ponekad njihovo slanje e-poštom sysadminu i na kraju ih briše kako stare. Konvencije koje se koriste za imenovanje ovih rotiranih log datoteka su različite (dodavanje sufiksa sa datumom, na primjer); međutim, jednostavno dodavanje sufiksa s cijelim brojem je uobičajeno:
# ls /var/log/apache2/ access.log error.log error.log.1 error.log.2.gz other_vhosts_access.log
Obratite pažnju na to kako je error.log.2.gz
već kompresovan sa gunzip-om (otuda sufiks .gz
).
Prstenasti bafer kernela
Prstenasti bafer kernela je struktura podataka fiksne veličine koja snima poruke o butanju kernela kao i sve poruke kernela uživo. Funkcija ovog bafera — koja je vrlo važna — je da evidentira sve poruke kernela proizvedene pri butanju — kada syslog
još nije dostupan. Komanda dmesg
ispisuje prstenasti bafer kernela (koji je također bio pohranjen u /var/log/dmesg
). Zbog proširenja prstenastog bafera, ova komanda se obično koristi u kombinaciji sa uslužnim programom za filtriranje teksta grep
ili pejdžerom kao što je less
. Na primjer, za traženje poruka o butanju:
$ dmesg | grep boot [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet [ 0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet [ 0.144986] AppArmor: AppArmor disabled by boot time parameter (...)
Note
|
Kako prstenasti bafer kernela vremenom raste s novim porukama, najstarije će nestati. |
Sistemski dnevnik: systemd-journald
Od 2015. systemd je zamijenio SysV Init kao de facto sistemski i servisni menadžer u većini glavnih Linux distribucija. Kao posljedica toga, daemon dnevnik — journald — postao je standardna komponenta za evidentiranje, zamjenjujući syslog u većini aspekata. Podaci se više ne pohranjuju u običnom tekstu, već u binarnom obliku. Stoga je uslužni program journalctl
neophodan za čitanje logova. Povrh toga, journald je kompatibilan sa syslogom i može se integrirati sa istim.
`journalctl`je uslužni program koji se koristi za čitanje i ispitivanje systemd baze podataka dnevnika. Ako se pozove bez opcija, ispisuje cijeli dnevnik:
# journalctl -- Logs begin at Tue 2019-06-04 17:49:40 CEST, end at Tue 2019-06-04 18:13:10 CEST. -- jun 04 17:49:40 debian systemd-journald[339]: Runtime journal (/run/log/journal/) is 8.0M, max 159.6M, 151.6M free. jun 04 17:49:40 debian kernel: microcode: microcode updated early to revision 0xcc, date = 2019-04-01 Jun 04 17:49:40 debian kernel: Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) Jun 04 17:49:40 debian kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 root=/dev/sda1 ro quiet (...)
Međutim, ako se pozove sa svičevima -k
ili --dmesg
, bit će ekvivalentno korištenju komande dmesg
:
# journalctl -k [ 0.000000] Linux version 4.9.0-9-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u2 (2019-05-13) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet (...)
Druge interesantne opcije za journalctl
uključuju:
-b
,--boot
-
Prikazuje boot informacije.
-u
-
Prikazuje poruke o određenoj jedinici. Ugrubo, jedinica se može definirati kao bilo koji resurs kojim upravlja systemd. Na primjer,
journalctl -u apache2.service
se koristi za čitanje poruka oapache2
web serveru. -f
-
Prikazuje najnovije poruke dnevnika i nastavlja da štampa nove unose dok se dodaju u dnevnik — slično kao
tail -f
.
Vođene vježbe
-
Pogledajte sljedeći prikaz
top
i odgovorite na sljedeća pitanja:carol@debian:~$ top top - 13:39:16 up 31 min, 1 user, load average: 0.12, 0.15, 0.10 Tasks: 73 total, 2 running, 71 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.1 us, 0.4 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1020332 total, 698700 free, 170664 used, 150968 buff/cache KiB Swap: 1046524 total, 1046524 free, 0 used. 710956 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 605 nobody 20 0 1137620 132424 34256 S 6.3 13.0 1:47.24 ntopng 444 www-data 20 0 364780 4132 2572 S 0.3 0.4 0:00.44 apache2 734 root 20 0 95212 7004 6036 S 0.3 0.7 0:00.36 sshd 887 carol 20 0 46608 3680 3104 R 0.3 0.4 0:00.03 top 1 root 20 0 56988 6688 5240 S 0.0 0.7 0:00.42 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.87 kworker/0:0 (...)
-
Koje procese je započeo korisnik
carol
? -
Koji virtuelni
/proc
direktorij biste trebali posjetiti da biste tražili podatke u vezi sa komandomtop
? -
Koji proces je prvi pokrenut? Kako možete reći?
*Popunite tabelu navodeći u kojem polju
top
izlaza se nalaze sljedeće informacije:Information about … Summary Area Task Area Memory
Swap
PID
CPU time
Commands
-
-
Koja komanda se koristi za čitanje sljedećih binarnih logova?
-
/var/log/wtmp
-
/var/log/btmp
-
/run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
-
-
U kombinaciji sa
grep
, koje komande biste koristili da saznate sljedeće informacije o vašem Linux sistemu?-
Kada je sistem posljednji put restartovan (
wtmp
) -
Koji hard diskovi su instalirani (
kern.log
) -
Kada se desila posljednja prijava (
auth.log
)
-
-
Koje dvije komande biste koristili da prikažete prstenasti bafer kernela?
-
Označite gdje pripadaju sljedeće log poruke:
-
Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/messages
-
Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/messages
-
Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/messages
-
Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/messages
-
-
Neka
journalctl
prikaže informacije o sljedećim jedinicama?Unit Command ssh
networking
rsyslog
cron
Istraživačke vježbe
-
Razmotrite
top
rezultat vođenih vježbi i odgovorite na sljedeća pitanja:-
Koja dva koraka biste pratili kako bi ubili apache web server?
-
U polju sažetka, kako biste mogli prikazati informacije o fizičkoj i swap memoriji koristeći trake progresa?
-
Sada, sortirajte procese po memorijskom zauzeću:
-
Sada kada imate informacije o memoriji prikazane u trakama progresa i procesima sortiranim prema korištenju memorije, spremite ove konfiguracije tako da ih dobijete kao zadane sljedeći put kada koristite
top
: -
Koja datoteka pohranjuje
top’s
konfiguracijske postavke? Gdje živi? Kako možete provjeriti njeno postojanje?
-
-
Saznajte više o komandi
exec
u Bashu. Pokušajte demonstrirati njegovu funkcionalnost pokretanjem Bash sesije, pronalaženjem Bash procesa saps
, zatim pokreniteexec /bin/sh
i ponovo potražite proces sa istim PID-om. -
Slijedite ove korake da istražite događaje kernela i udev dinamičko upravljanje uređajima:
-
Priključite USB uređaj u svoj računar. Pokrenite
dmesg
i obratite pažnju na zadnje redove. Koja je najnovija linija? -
Imajući na umu izlaz iz prethodne komande, pokrenite
ls /dev/sd*
i uvjerite se da se vaš USB disk pojavljuje na listi. Šta je izlaz?*Sada uklonite USB disk i ponovo pokrenite
dmesg
. Kako izgleda najnoviji red? -
Ponovo pokrenite
ls /dev/sd*
i uvjerite se da je vaš uređaj nestao sa liste. Šta je izlaz?
-
Sažetak
U kontekstu skladištenja podataka, sljedeće teme su razmatrane u ovoj lekciji: upravljanje procesima i sistemsko evidentiranje i slanje poruka.
Što se tiče upravljanja procesima, naučili smo sljedeće:
-
Programi generišu procese i procesi postoje u hijerarhiji.
-
Svaki proces ima jedinstveni identifikator (
PID
) i identifikator nadređenog procesa (PPID
). -
top
je vrlo korisna komanda za dinamičko i interaktivno istraživanje pokrenutih procesa u sistemu. -
ps
se može koristiti za dobijanje snimka trenutno pokrenutih procesa u sistemu. -
Direktorij
/proc
uključuje direktorije za svaki pokrenut proces u sistemu nazvan po njihovim PID-ovima. -
Koncept prosjeka opterećenja sistema — što je vrlo korisno za provjeru iskorištenosti/preopterećenja CPU-a.
Kada je u pitanju sistemsko evidentiranje, moramo zapamtiti:
-
Log datoteka je datoteka u kojoj se bilježe sistemski događaji. Logovi su neprocjenjivi kada je u pitanju rješavanje problema.
-
Evidentiranjem ili logiranjem tradicionalno upravljaju posebni servisi kao što su syslog, syslog-ng ili rsyslog. Ipak, neki programi koriste svoje vlastite daemone za evidentiranje.
-
Budući da su logovi promjenjivi podaci, čuvaju se u
/var
i — ponekad — njihova imena vam mogu dati nagovještaj o njihovom sadržaju (kern.log
,auth.log
, itd.) -
Većina logova je napisana u običnom tekstu i može se čitati u bilo kojem editoru teksta sve dok imate odgovarajuća dopuštenja. Međutim, neki od njih su binarni i moraju se čitati pomoću posebnih komandi.
-
Da biste izbjegli probleme s prostorom na disku, log rotaciju provodi uslužni program logrotate.
-
Što se tiče kernela, on koristi kružnu strukturu podataka — bafer prstena — gdje se čuvaju poruke o butanju (stare poruke nestaju tokom vremena).
-
Sistemski i servisni menadžer systemd zamjenio je System V init u skoro svim distribucijama tako što je journald postao standardna usluga evidentiranja.
-
Za čitanje systemd-ovog dnevnika potreban je uslužni program
journalctl
.
Komande korištene u ovoj lekciji:
cat
-
Concateniraj/prikaži sadržaj datoteke.
dmesg
-
Prikaži prstenasti bafer kernela.
echo
-
Prikaži liniju teksta ili novi red.
file
-
Prikaži tip datoteke.
grep
-
Prikaži redove koje odgovaraju uzorku.
last
-
Prikaži listu posljednjih prijavljenih korisnika.
less
-
Prikaži sadržaj datoteke po jednu stranicu.
ls
-
Prikaži sadržaj direktorija.
journalctl
-
Upit
systemd
dnevnika. tail
-
Prikaži poslednje redove datoteke.
Odgovor na vođene vježbe
-
Pogledajte sljedeći prikaz
top
i odgovorite na sljedeća pitanja:carol@debian:~$ top top - 13:39:16 up 31 min, 1 user, load average: 0.12, 0.15, 0.10 Tasks: 73 total, 2 running, 71 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.1 us, 0.4 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1020332 total, 698700 free, 170664 used, 150968 buff/cache KiB Swap: 1046524 total, 1046524 free, 0 used. 710956 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 605 nobody 20 0 1137620 132424 34256 S 6.3 13.0 1:47.24 ntopng 444 www-data 20 0 364780 4132 2572 S 0.3 0.4 0:00.44 apache2 734 root 20 0 95212 7004 6036 S 0.3 0.7 0:00.36 sshd 887 carol 20 0 46608 3680 3104 R 0.3 0.4 0:00.03 top 1 root 20 0 56988 6688 5240 S 0.0 0.7 0:00.42 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.87 kworker/0:0 (...)
-
Koje procese je započeo korisnik
carol
?Odgovor: Samo jedan:
top
. -
Koji virtuelni
/proc
direktorij biste trebali posjetiti da biste tražili podatke u vezi sa komandomtop
?Odgovor:
/proc/887
-
Koji proces je prvi pokrenut? Kako možete reći?
Odgovor:
systemd
. Zato što imaPID
#1. -
Popunite tabelu navodeći u kojem polju
top
izlaza se nalaze sljedeće informacije:Information about … Summary Area Task Area Memory
Yes
Yes
Swap
Yes
No
PID
No
Yes
CPU time
Yes
Yes
Commands
No
Yes
-
-
Koja komanda se koristi za čitanje sljedećih binarnih logova?
-
/var/log/wtmp
Odgovor:
last
-
/var/log/btmp
Odgovor:
lastb
-
/run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
Odgovor:
journalctl
-
-
U kombinaciji sa
grep
, koje komande biste koristili da saznate sljedeće informacije o vašem Linux sistemu?-
Kada je sistem posljednji put restartovan (
wtmp
)Odgovor:
last
-
Koji hard diskovi su instalirani (
kern.log
)Odgovor:
less /var/log/kern.log
-
Kada se desila posljednja prijava (
auth.log
)Odovor:
less /var/log/auth.log
-
-
Koje dvije komande biste koristili da prikažete prstenasti bafer kernela?
dmesg
ijournalctl -k
(takođerjournalctl --dmesg
). -
Označite gdje pripadaju sljedeće log poruke:
-
Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
X
/var/log/messages
-
Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver
/var/log/auth.log
/var/log/kern.log
X
/var/log/syslog
/var/log/messages
X
Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)
/var/log/auth.log
X
/var/log/kern.log
/var/log/syslog
/var/log/messages
-
Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/messages
X
-
-
Neka
journalctl
prikaže informacije o sljedećim jedinicama?Unit Command ssh
journalctl -u ssh.service
networking
journalctl -u networking.service
rsyslog
journalctl -u rsyslog.service
cron
journalctl -u cron.service
Odgovor na istraživačke vježbe
-
Razmotrite
top
rezultat vođenih vježbi i odgovorite na sljedeća pitanja:-
Koja dva koraka biste pratili kako bi ubili apache web server?
Prvo, pritisnite
k
; onda proslijeditekill
vrijednost. -
U polju sažetka, kako biste mogli prikazati informacije o fizičkoj i swap memoriji koristeći trake progresa?
Pritiskom
m
jednom ili dvaput. -
Sada, sortirajte procese po memorijskom zauzeću:
M
-
Sada kada imate informacije o memoriji prikazane u trakama progresa i procesima sortiranim prema korištenju memorije, spremite ove konfiguracije tako da ih dobijete kao zadane sljedeći put kada koristite
top
:W
-
Koja datoteka pohranjuje
top’s
konfiguracijske postavke? Gdje živi? Kako možete provjeriti njeno postojanje?Datoteka je
~/.config/procps/toprc
i živi u korisničkom home direktoriju (~
). Pošto je to skrivena datoteka (nalazi se u direktoriju čije ime počinje tačkom), možemo provjeriti njegovo postojanje pomoćuls -a
(navesti sve datoteke). Ova datoteka se može generisati pritiskom na kbd:[Shift+W] dok je utop
.
-
-
Saznajte više o komandi
exec
u Bashu. Pokušajte demonstrirati njegovu funkcionalnost pokretanjem Bash sesije, pronalaženjem Bash procesa saps
, zatim pokreniteexec /bin/sh
i ponovo potražite proces sa istim PID-om.exec
zamjenjuje proces drugom komandom. U sljedećem primjeru možemo vidjeti da je Bash proces zamijenjen sa/bin/sh
(umjesto da/bin/sh
postane podređeni proces):$ echo $$ 19877 $ ps auxf | grep 19877 | head -1 carol 19877 0.0 0.0 7448 3984 pts/25 Ss 21:17 0:00 \_ bash $ exec /bin/sh sh-5.0$ ps auxf | grep 19877 | head -1 carol 19877 0.0 0.0 7448 3896 pts/25 Ss 21:17 0:00 \_ /bin/sh
-
Slijedite ove korake da istražite događaje kernela i udev dinamičko upravljanje uređajima:
-
Priključite USB uređaj u svoj računar. Pokrenite
dmesg
i obratite pažnju na zadnje redove. Koja je najnovija linija?Trebali biste dobiti nešto slično redovima
[ 1967.700468] sd 6:0:0:0: [sdb] Attached SCSI removable disk
. -
Imajući na umu izlaz iz prethodne komande, pokrenite
ls /dev/sd*
i uvjerite se da se vaš USB disk pojavljuje na listi. Šta je izlaz?Ovisno o broju uređaja povezanih na vaš sistem, trebali biste dobiti nešto poput
/dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdb2
. U našem slučaju, nalazimo naš USB disk (/dev/sdb
) i njegove dvije particije (/dev/sdb1
i/dev/sdb2
). -
Sada uklonite USB disk i ponovo pokrenite
dmesg
. Kako izgleda najnoviji red?Trebali biste dobiti nešto slično redovima
[ 2458.881695] usb 1-9: USB disconnect, device number 6
.Ponovo pokrenite
ls /dev/sd
i uvjerite se da je vaš uređaj nestao sa liste. Šta je izlaz?U našem slučaju,
/dev/sda /dev/sda1
.
-