20 Linuxové příkazy pro správce systému

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í