Operační systém Linux poskytuje rozsáhlou škálu nástrojů a příkazů, které administrátorům usnadňují správu systémů. Díky nim lze úkoly provádět s vysokou efektivitou a rychlostí.
Práce systémového administrátora zahrnuje různé činnosti, jako je instalace a konfigurace softwaru, řízení přístupu uživatelů, monitorování systémů, zajištění jejich dostupnosti, provádění zálohování a obnova dat, a samozřejmě řešení nečekaných problémů. 😜
V tomto článku se zaměříme na některé příkazy, které jsou pro správce Linuxových systémů nepostradatelné a které často používají při své každodenní práci.
Zjištění informací o systému
Pro zobrazení základních informací o systému je možné využít příkaz uname
s parametrem -a
. Tento příkaz zobrazí název jádra, jeho verzi, verzi jádra, název hostitele, typ procesoru a další relevantní informace o hardwarové platformě.
[email protected]:~$ uname -a Linux ubuntu18 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Interpretace výstupu:
Název jádra: Linux Název hostitele: ubuntu18 Verze jádra: 5.3.0-1028-azure Verze sestavení jádra: #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 Architektura stroje: x86_64 Procesor: x86_64 Hardwarová platforma: x86_64 Operační systém: GNU/Linux
Kontrola obsazení disku
Příkaz df
slouží k zobrazení informací o souborových systémech a volném diskovém prostoru. Standardně je výstup zobrazen v 1K blocích.
[email protected]:~$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 437208 0 437208 0% /dev tmpfs 91100 692 90408 1% /run /dev/sda1 30309264 2383952 27908928 8% / ....
Pro výstup v čitelnější formě, tedy v megabajtech (MB) a gigabajtech (GB), použijte přepínač -h
.
[email protected]:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 427M 0 427M 0% /dev tmpfs 89M 692K 89M 1% /run /dev/sda1 29G 2.3G 27G 8% / tmpfs 445M 0 445M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 445M 0 445M 0% /sys/fs/cgroup /dev/sda15 105M 3.6M 101M 4% /boot/efi /dev/sdb1 3.9G 16M 3.7G 1% /mnt tmpfs 89M 0 89M 0% /run/user/1001
Pro ignorování specifických souborových systémů, například tmpfs
, použijte parametr -x
, který zajistí přehlednější výstup.
[email protected]:~$ df -h -x tmpfs Filesystem Size Used Avail Use% Mounted on udev 427M 0 427M 0% /dev /dev/sda1 29G 2.3G 27G 8% / /dev/sda15 105M 3.6M 101M 4% /boot/efi /dev/sdb1 3.9G 16M 3.7G 1% /mnt
Pokud potřebujete zobrazit pouze konkrétní typ souborového systému, použijte parametr -t
. Například pro zobrazení pouze ext4
souborových systémů:
[email protected]:~$ df -h -t ext4 Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 2.3G 27G 8% / /dev/sdb1 3.9G 16M 3.7G 1% /mnt
Pomocí přepínače --total
můžete přidat řádek se souhrnnými hodnotami:
[email protected]:~$ df -h -t ext4 --total Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 2.3G 27G 8% / /dev/sdb1 3.9G 16M 3.7G 1% /mnt total 33G 2.3G 31G 8% -
Zjišťování využití místa v adresáři
Příkaz du
slouží ke kontrole využití diskového prostoru v daném adresáři. Například pro zjištění využití disku v adresáři /var/log
. Pro formát výstupu čitelný pro člověka použijte přepínač -h
.
[email protected]:~$ sudo du -h /var/log 24K /var/log/Microsoft/Azure/NetworkWatcherAgent/Logs 28K /var/log/Microsoft/Azure/NetworkWatcherAgent 32K /var/log/Microsoft/Azure 36K /var/log/Microsoft 60K /var/log/apt 4.0K /var/log/samba 177M /var/log/journal/0f4f926f583b4691af7de11025b19ff6 177M /var/log/journal ... 204M /var/log
Pro zobrazení pouze celkového využití adresáře použijte přepínač -s
(souhrn).
[email protected]:~$ sudo du -hs /var/log 204M /var/log
Monitorování systémové paměti
Příkaz free
zobrazuje informace o celkové, použité a volné paměti systému. Pro zobrazení výstupu v lidsky čitelné formě použijte přepínač -h
.
[email protected]:~$ free -h total used free shared buff/cache available Mem: 889M 272M 100M 712K 517M 443M Swap: 0B 0B 0B
Celková paměť: Total installed memory (memtotal + swaptotal) Využitá paměť: used memory Volná paměť: unused memory (memfree + swapfree) Vyrovnávací paměť: memory used by kernel buffers Cache: memory used by page caches Vyrovnávací paměť / cache: sum of buffers and cache Dostupná paměť: Estimated memory available for starting new applications, without swapping
Výpis běžících procesů
Pro zobrazení informací o běžících procesech v systému slouží příkaz ps
. Pro zobrazení všech procesů vlastněných uživatelem „ubuntu“ použijte přepínač -u
s uživatelským jménem.
[email protected]:~$ ps -u ubuntu PID TTY TIME CMD 7804 ? 00:00:00 systemd 7805 ? 00:00:00 (sd-pam) 7940 ? 00:00:00 sshd 7941 pts/0 00:00:00 bash 8111 ? 00:00:00 sshd 8112 pts/1 00:00:00 bash 13868 ? 00:00:00 sshd 13869 pts/2 00:00:00 bash 13885 pts/0 00:00:00 man 13895 pts/0 00:00:00 pager 18111 pts/2 00:00:00 man 18121 pts/2 00:00:00 pager 18485 pts/1 00:00:00 ps
Pro zobrazení všech procesů použijte přepínač aux
.
[email protected]:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.7 160076 7020 ? Ss Jun29 0:34 /sbin/init root 2 0.0 0.0 0 0 ? S Jun29 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< Jun29 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< Jun29 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< Jun29 0:00 [kworker/0:0H-kb] ....
Interpretace výstupu:
Nadpis | Význam |
PID | Identifikační číslo procesu |
%CPU | Procento času procesoru, které proces využívá |
%MEM | Procento využití paměti RAM |
VSZ | Využití virtuální paměti v KB |
RSS | Fyzická paměť, kterou proces používá, v KB |
TTY | Terminál spojený s procesem |
STAT | R – Běžící nebo připraven ke spuštění, S – Spící, I – Nečinný, T – Zastaven, Z – Zombie, D – Čeká na diskový I/O, X – Mrtvý, W – Vyměněn, N – Proces s nízkou prioritou, < – Proces s vysokou prioritou |
Interaktivní sledování procesů
Zatímco příkaz ps
zobrazuje statický snímek stavu procesů, top
zobrazuje průběžně aktualizovaný seznam systémových procesů, seřazený podle jejich aktivity CPU. Aktualizace se provádí standardně každé tři sekundy.
Výstup příkazu top
se skládá ze dvou hlavních částí: systémový souhrn a tabulka procesů seřazená podle aktivity CPU.
top - 14:25:32 up 44 days, 11:37, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 114 total, 1 running, 59 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 910992 total, 101208 free, 274712 used, 535072 buff/cache KiB Swap: 0 total, 0 free, 0 used. 458492 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 50497 ubuntu 20 0 44528 3944 3368 R 0.7 0.4 0:00.15 top 1 root 20 0 160076 7020 4400 S 0.0 0.8 0:34.85 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.08 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:+ 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_+
Význam některých polí v systémovém souhrnu:
Čas provozu systému: Doba provozuschopnosti. Čas od posledního spuštění počítače.
Průměrná zátěž: Průměrná zátěž se týká počtu procesů, které čekají na spuštění. Hodnota menší než 1.0 znamená, že systém není zaneprázdněn. Zobrazují se 3 hodnoty: průměr za posledních 60 sekund, průměr za posledních 5 minut a průměr za posledních 15 minut.
Využití CPU:
Tento řádek popisuje činnosti CPU.
- Uživatelské procesy: 0.3 % CPU se používá pro uživatelské procesy.
- Systémové procesy: 0.0 % CPU se používá pro systémové procesy.
- Procesy s nízkou prioritou: 0.0 % CPU je využíváno procesy s nízkou prioritou.
- Nečinný procesor: 99.7 % CPU je nečinných.
- Čekání na I/O operace: 0.0 % CPU čeká na I/O operace.
- Hardwarová přerušení: čas strávený hardwarovými přerušeními.
- Softwarová přerušení: čas strávený softwarovými přerušeními.
- Čas využitý hypervizorem: časový kámen z tohoto virtuálního počítače hypervizorem.
Pole v tabulce procesů:
PID | Identifikační číslo procesu |
USER | Vlastník procesu |
PR | Priorita |
NI | Nice hodnota |
VIRT | Virtuální paměť použitá procesem (KB) |
RES | Fyzická paměť použitá procesem |
SHR | Sdílená paměť použitá procesem |
S | Stav procesu. R – běžící, S – spící, I – nečinný, T – zastavený, Z – zombie, D – čekání na vstup/výstup disku, W- vyměněno, X – mrtvý |
%CPU | Procento času procesoru, který proces využívá |
%MEM | Procento fyzické paměti používané procesem |
TIME+ | Celkový čas CPU použitý procesem |
COMMAND | Název programu |
Při běhu příkazu top
lze zadávat různé příkazy. Stisknutím klávesy h
nebo ?
zobrazíte dostupné příkazy. Klávesou k
lze ukončit proces a klávesou q
ukončíte samotný příkaz top
.
DNS dotazy
Příkaz dig
je nástroj pro provádění DNS dotazů. Používá se následovně:
dig <DNS server> <doména> <typ_dotazu>
kde:
<DNS server>
je název DNS serveru, na který chcete poslat dotaz.<doména>
je název domény, na kterou se chcete dotazovat.<typ_dotazu>
je typ záznamu, který chcete zjistit (A, MX, NS, SOA atd.).
Pro zjednodušený výstup lze použít parametr +short
.
Zobrazení záznamu A pro google.com
:
[email protected]:~$ dig google.com +short 172.217.164.174
Zobrazení záznamů MX pro google.com
:
[email protected]:~$ dig google.com MX +short 50 alt4.aspmx.l.google.com. 10 aspmx.l.google.com. 20 alt1.aspmx.l.google.com. 40 alt3.aspmx.l.google.com. 30 alt2.aspmx.l.google.com.
Pro online vyhledávání DNS záznamů můžete použít vyhledávač DNS.
Zobrazení přihlášených uživatelů
Příkaz who
zobrazuje seznam přihlášených uživatelů.
[email protected]:~$ who ubuntu pts/0 2020-08-14 17:28 (183.83.211.129) ubuntu pts/1 2020-08-14 17:58 (183.83.211.129)
Příkaz w
zobrazuje aktuálně přihlášené uživatele a jejich spuštěné procesy. V záhlaví se zobrazuje aktuální čas, doba provozu systému, počet přihlášených uživatelů a průměrné zatížení systému.
[email protected]:~$ w 18:07:33 up 46 days, 15:19, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT ubuntu pts/0 183.83.211.129 17:28 2.00s 0.10s 0.00s w ubuntu pts/1 183.83.211.129 17:58 9:07 0.05s 0.01s vi
V následující části jsou uvedena uživatelská jména, terminál, vzdálená IP adresa ze které jsou přihlášení, čas přihlášení, doba nečinnosti, JCPU, PCPU a spuštěný program. JCPU
je celkový čas procesoru využitý všemi procesy spojenými s daným terminálem, zatímco PCPU
je čas procesoru využitý aktuálním procesem.
Archivace souborů
S nástrojem tar
můžete archivovat více souborů do jednoho souboru.
Například vytvoříme adresář myfiles
a v něm tři soubory a.txt
, b.txt
a c.txt
:
[email protected]:~$ mkdir myfiles ; touch myfiles/{a.txt,b.txt,c.txt}
Nyní vytvořte archiv s názvem allfiles.tar
obsahující všechny soubory v adresáři myfiles
:
[email protected]:~$ tar -cvf allfiles.tar myfiles myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt
Zobrazení obsahu aktuálního adresáře. Zde můžete vidět adresář myfiles
a archiv allfiles.tar
:
[email protected]:~$ ls allfiles.tar myfiles
Archiv můžete rozbalit s přepínačem -x
. Rozbalení archivu allfiles.tar
:
[email protected]:~$ tar -xvf allfiles.tar myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt
Tento archiv je také možné komprimovat s parametrem -z
, který vytvoří archiv komprimovaný pomocí gzip
:
[email protected]:~$ tar -zcvf allfiles.tar.gz myfiles myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt [email protected]:~$ ls allfiles.tar.gz myfiles
Pro rozbalení komprimovaného archivu použijte -z
s parametrem -x
.
[email protected]:~$ tar -zxvf allfiles.tar.gz myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt
Vyhledávání v souborech
Příkaz grep
se používá pro vyhledávání vzoru v souboru nebo sadě souborů a vypíše všechny řádky, které tomuto vzoru odpovídají. Pro vyhledání řádku obsahujícího „ServerRoot“ v souboru /etc/apache2/apache2.conf
:
[email protected]:~$ grep ServerRoot /etc/apache2/apache2.conf # ServerRoot: The top of the directory tree under which the server's #ServerRoot "/etc/apache2"
Pro vyhledávání ve všech souborech v daném adresáři použijte *
. Pro rekurzivní vyhledávání i v podadresářích použijte přepínač -r
. Pro vyhledání všech řádků obsahujících „VirtualHost“ ve všech souborech v /etc/apache2
:
[email protected]:~$ cd /etc/apache2 [email protected]:/etc/apache2$ grep -r VirtualHost * apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost> apache2.conf:# logged here. If you *do* define an error logfile for a <VirtualHost> conf-available/localized-error-pages.conf:# even on a per-VirtualHost basis. If you include the Alias in the global server conf-available/other-vhosts-access-log.conf:# Define an access log for VirtualHosts that don't define their own logfile ports.conf:# have to change the VirtualHost statement in sites-available/000-default.conf:<VirtualHost *:80> ...
Synchronizace souborů
Příkaz rsync
je nástroj pro rychlou synchronizaci souborů a adresářů mezi dvěma umístěními. Lze jej použít pro lokální i vzdálené kopírování. Rychlost spočívá v přenosu pouze rozdílů mezi zdrojovými soubory a existujícími soubory v cíli.
Je často využíván pro zálohování a jako vylepšený příkaz pro kopírování.
Například:
Pro kopírování/synchronizaci všech souborů z adresáře myfiles
do adresáře backups
:
[email protected]:~$ rsync -avh myfiles/ /backups sending incremental file list ./ a.txt b.txt c.txt sent 218 bytes received 76 bytes 588.00 bytes/sec total size is 0 speedup is 0.00
Pro synchronizaci souborů z adresáře myfiles
do adresáře backups
na vzdáleném hostiteli zahrňte do cílové adresy formát remote_user@remote_host
. Pro synchronizaci složky myfiles
na vzdálený hostitel s IP 10.0.0.50:
[email protected]:~$ rsync -avh myfiles/ [email protected]:/home/vagrant [email protected]'s password: sending incremental file list ./ a.txt b.txt c.txt sent 230 bytes received 76 bytes 47.08 bytes/sec total size is 0 speedup is 0.00
Statistiky socketů
Příkaz ss
slouží k výpisu statistik socketů, podobně jako starší nástroj netstat
. Pro zobrazení TCP socketů použijte parametr -t
.
[email protected]:~$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.0.0.4:53852 168.63.129.16:8037 ESTAB 0 0 10.0.0.4:ssh 183.83.211.129:64118 ESTAB 0 0 10.0.0.4:33256 169.254.169.254:http ESTAB 0 1080 10.0.0.4:ssh 222.186.30.35:11527 ESTAB 0 0 10.0.0.4:ssh 183.83.211.129:63049
Tímto způsobem se nezobrazí socket, které jsou v režimu „naslouchání“. Pro zobrazení všech socketů včetně naslouchajících použijte přepínače -t
a -a
.
[email protected]:~$ ss -t -a State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 80 127.0.0.1:mysql 0.0.0.0:* LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 10.0.0.4:53852 168.63.129.16:8037 ESTAB 0 0 10.0.0.4:ssh 183.83.211.129:64118 ESTAB 0 0 10.0.0.4:33256 169.254.169.254:http ESTAB 0 1080 10.0.0.4:ssh 222.186.30.35:11527 ESTAB 0 120 10.0.0.4:ssh 183.83.211.129:63049 LISTEN 0 128 [::]:ssh [::]:* LISTEN 0 128 *:http *:*
Rychlé vyhledávání souborů
Příkaz locate
používá pro vyhledávání souborů databázi, což je obecně rychlejší než příkaz find
. Pro vyhledání souboru apache2.conf
:
[email protected]:~$ locate apache2.conf /etc/apache2/apache2.conf /var/lib/dpkg/info/apache2.conffiles
Parametr -c
můžete použít pro zobrazení počtu odpovídajících souborů.
[email protected]:~$ locate -c apache2.conf 2
Pro aktualizaci databáze, kterou locate
používá (mlocate), použijte příkaz updatedb
s oprávněním superuživatele.
[email protected]:~$ sudo updatedb
Pokročilé vyhledávání souborů
Příkaz find
je jedním z nejpoužívanějších příkazů v Linuxu. Používá se pro vyhledávání souborů podle různých kritérií, jako jsou názvy souborů, oprávnění, ID uživatele, ID skupiny, velikost, typ souboru a další.
Pro vyhledávání souboru podle názvu v aktuálním adresáři použijte přepínač -name
následovaný názvem souboru.
[email protected]:~$ find . -name a.txt ./myfiles/a.txt
Pro vyhledávání adresářů použijte přepínač -type d
:
[email protected]:~$ find . -type d . ./.ssh ./myfiles ./.cache ./.gnupg ./.gnupg/private-keys-v1.d ./docker
Pro vyhledávání souborů podle velikosti, například soubory větší než 20 MB, použijte přepínač -size
:
[email protected]:~$ find . -size +20M ./docker/docker-ce-cli_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb ./docker/docker-ce_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb
Správa služeb
Vzhledem k tomu, že systemd nahradil SysV init v mnoha distribucích Linuxu, použijte příkaz systemctl
pro správu služeb a jednotek systemd.
Pro spuštění služby, například apache2
:
[email protected]:~$ sudo systemctl start apache2.service
Příponu .service
lze vynechat.
Pro zastavení služby:
[email protected]:~$ sudo systemctl stop apache2
Pro zobrazení stavu služby použijte příkaz systemctl status
. Následující