Linux: Kniha kouzel, vanilková příchuť 1.17 (27. února 2022)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

20. Systém

Řada 1.x vanilkové příchuti Linuxu: Knihy kouzel je od 1. října 2020 do 1. března 2023 ve stavu dlouhodobé pasivní údržby; nahlášené chyby budou opravovány, ale aktivní vývoj se již věnuje novější vývojové řadě určené pro novější verze operačního systému a programů. Pokud nejste vázáni na starší verze programů, doporučuji vyhledat novou verzi z aktivně vyvíjené vývojové řady.
démoni klávesnice systém tematický okruh

1. Úvod

Tato kapitola se zabývá vybranými aspekty běhu operačního systému a jeho ovládání, zejména ovládáním démonů, systémovými logy, restartem či vypnutím počítače. Také se zabývá rozložením klávesnice.

Když zavaděč GRUB spustí jádro systému, to pak vytvoří dva první procesy: systemd (PID 1) a kthreadd (PID 2). Systemd pak na základě tzv. výchozího cíle a dalších nastavení spustí další démony a také správce příhlášení, kteří umožní uživatelům přihlašovat se do systému (popř. automaticky přihlásí výchozího uživatele). Když se uživatel přihlásí, vznikne takzvané „sezení“, které zanikne, až se uživatel odhlásí (včetně případů, kdy je odhlášení součástí restartu či vypnutí počítače).

Tato kapitola se nezabývá samotným zaváděním operačního systému a diskovými oddíly. Rovněž se nezabývá zjišťováním informací o hardwaru počítače (s výjimkou procesoru).

Tato verze kapitoly nepokrývá nastavení automatického přihlašování do X, nastavování cílů, nastavení synchronizace systémového času s NTP servery ani vytváření vlastních služeb a démonů. Rovněž nepokrývá ovládání kontejnerů příkazem „machinectl“.

Poznámka: práce s odkládacím prostorem byla přesunuta do kapitoly Diskové oddíly.

2. Definice

3. Zaklínadla

3/1 Informace o systému (zjistit)

obecné informace (pro člověka)(alternativy)#1
neofetch
inxi
verze a varianta jádra#2
uname -r⊨ 5.0.0-37-generic
čas od spuštění systému (uptime)#3
uptime --pretty
kompletní informace o hardware (textově/s prohlížečem)#4
sudo lshw
sudo lshw -html >/tmp/lshw.htm && sensible-browser /tmp/lshw.htm
počet logických procesorů/fyzických jader#5
nproc --all
jméno procesoru#6
LC_ALL=C lscpu | egrep '^Model name:' | sed -E 's/^[^:]*:\s*//'
informace o frekvenci procesoru (pro člověka)#7
LC_ALL=C lscpu | egrep '^CPU[^:]+MHz:'
informace o velikosti a využití paměti a odkládacího prostoru#8
free -h
zjistit druh počítače (stolní počítač, nebo notebook?)#9 (1)
laptop-detect
kódové jméno verze distribuce#10
lsb_release -sc⊨ bionic
ǀjméno/verze distribuce#11
lsb_release -si⊨ Ubuntu
lsb_release -sr⊨ 18.04
jméno počítače#12
hostname⊨ mojepc
jméno jádra/druh operačního systému#13
uname -n⊨ Linux
uname -o⊨ GNU/Linux
architektura systému#14
arch⊨ x86_64

3/2 Restart a vypnutí počítače

restartovat počítač (normálně/drasticky/velmi drasticky)#1
reboot
sudo systemctl reboot --force
sudo systemctl reboot --force --force
vypnout počítač (normálně/drasticky/velmi drasticky)#2
poweroff
sudo systemctl poweroff --force
sudo systemctl poweroff --force --force
přepnout do jednouživatelského režimu (záchranného/nouzového)#3 (2)
sudo systemctl rescue
sudo systemctl emergency
uspat systém#4
systemctl suspend
hibernovat systém#5
sudo systemctl hibernate
zastavit systém bez vypnutí počítače (normálně/drasticky/velmi drasticky)#6
sudo systemctl halt
sudo systemctl halt --force
sudo systemctl halt --force --force
vypnout počítač za N minut/zrušit naplánované vypnutí#7
sudo shutdown -P [--no-wall] N
sudo shutdown -c

3/3 Ovládání systémových jednotek

spustit neběžící#1
sudo systemctl start jednotka.typ
zastavit běžící#2
sudo systemctl stop jednotka.typ
restartovat běžící#3
sudo systemctl restart jednotka.typ
nastavit automatické spouštění jednotky/zrušit toto nastavení#4 (3)
sudo systemctl enable [--now] jednotka.typ
sudo systemctl disable [--now] jednotka.typ
zcela zakázat spouštění systémové jednotky/zrušit tento zákaz#5 (4)
sudo systemctl mask jednotka.typ
sudo systemctl unmask jednotka.typ

3/4 Informace o systémových jednotkách

zjistit stav (pro člověka/pro skript)#1
systemctl status jednotka.typ
systemctl show jednotka.typ
zjistit, zda jednotka běží#2 (5)
systemctl is-active [--quiet] jednotka.typ-nebo-vzorek
vypsat jednotky všech typů#3
systemctl list-units [--all] [filtrovací-vzorek]
vypsat časovače#4
systemctl list-timers [--all]
vypsat služby#5
systemctl list-units --all -t service
vypsat cíle#6
systemctl list-units --all -t target
zjistit PID příslušné dané jednotce (je-li definováno)#7 (6)
systemctl show --property=MainPID jednotka.typ | sed -E 's/.*=//'
ƪvypsat manuálovou stránku příslušnou jednotce, je-li známa#8
systemctl help jednotka.typ
vypsat dynamické závislosti jednotky (na kterých jednotka závisí/které závisí na jednotce)#9 (7)
systemctl list-dependencies
systemctl list-dependencies --reverse

3/5 Logy

vypsat log krále démonů#1
journalctl [parametry]
vypsat log jádra (pro skript/pro člověka)#2
dmesg [--time-format iso]
dmesg -H[x] [--time-format iso]
sledovat log krále démonů/log jádra#3
journalctl -fqn 0 [parametry]
dmesg -w[H][x][--time-format iso]
vypsat seznam časů posledních nabootování#4
journalctl --list-boots | sed -E $'s/.*([A-Z][a-z]{2}.*)\u2014.*/\\1/' | date -f - "+%F %T %z"
zjistit, kolik místa na disku zabírají logy krále démonů#5
journalctl --disk-usage
vyprázdnit log krále démonů/log jádra#6
sudo dmesg --clear

3/6 Sezení

vypsat seznam sezení/přihlášených uživatelů#1
loginctl [list-sessions]
loginctl list-users
vypsat informace o sezení/přihlášeném uživateli#2
loginctl show-session ID-sezení
loginctl show-user uživatel
přepnout na uvedené sezení#3 (8)
loginctl activate ID-sezení
násilně ukončit sezení/všechna sezení uživatele#4
loginctl terminate-session ID-sezení
loginctl terminate-user uživatel

3/7 Ostatní

nastavit jméno počítače#1 (9)
stare=$(hostname)
nove=nove-jmeno
sudo sed -i -E 's/(\s)'${stare}'$/\1'${nove}'/' /etc/hosts && sudo sed -i -E 's/^'${stare}'/'${nove}'/' /etc/hostname
Restartujte počítač.
nastavit proměnnou prostředí krále démonů/smazat ji#2
sudo systemctl set-environment PROMĚNNÁ="hodnota" [DALŠÍ_PROMĚNNÁ="její hodnota"]
sudo systemctl unset-environment PROMĚNNÁ
který cíl je pro start systému výchozí?#3
systemctl get-default
nastavit výchozí cíl#4
sudo systemctl set-default cíl.target
dočasně vypnout automatické připojování výměnných jednotek #5

3/8 Analýza času stráveného zaváděním systému

rozdělení času mezi firmware, zavaděč, jádro a zbytek (pro člověka)#1
systemd-analyze time⊨ Startup finished in 13.465s (firmware) + 1.435s (loader) + 3.459s (kernel) + 1min 30.339s (userspace) = 1min 48.700s
kolik času zabrala inicializace jednotek? (pro člověka)#2 (10)
systemd-analyze blame [--user]
vykreslit graf popisující inicializaci jednotek při zavádění#3
systemd-analyze plot >dočasný-soubor.svg && sensible-browser dočasný-soubor.svg

4. Zaklínadla (klávesnice)

4/1 Ovládání počítače klávesnicí

nouzový restart počítače#1 (11)(12)
Stiskněte a držte stisknuté klávesy Alt + PrtScr.
Na klávesnici s krátkými přestávkami vyťukejte: R, E, I, S, U, B.
Uvolněte PrtScrAlt.
drastické nouzové vypnutí počítače#2
Alt + PrtScr + O.
vypsat nápovědu k nouzovým klávesovým zkratkám jádra#3 (13)
Jste-li v grafickém režimu, přepněte se na textovou virutální konzoli zkratkou Ctrl + Alt + F2.
Stiskněte Alt + PrtScr + H. Měla by se vypsat nápověda.
Zpět do grafického režimu se vrátíte Alt + F7 (pouze ve variantách Ubuntu a Kubuntu je to místo toho Alt + F1).

4/2 Ovládání klávesnice počítačem

Poznámka: příkazy v této sekci jsou určeny výhradně pro X; téméř jistě nebudou fungovat v textových virtuálních konzolích ani na Waylandu.

zapnout/vypnout/přepnout Num Lock#1
numlockx on
numlockx off
numlockx toggle
zapnout/vypnout/přepnout Caps Lock#2
xdotool key Caps_Lock
zapnout/vypnout/přepnout Scroll Lock#3
xdotool key Scroll_Lock
vypnout/znovu zapnout klávesnici#4
xinput --disable $(xinput --list --short | egrep '\[.*keyboard.*\]' | egrep -iv 'virtual|(power|sleep) button' | tail -n 1 | sed -E 's/.*id=([0-9]+)[^0-9].*/\1/')
xinput --enable $(xinput --list --short | egrep '\[.*keyboard.*\]' | egrep -iv 'virtual|(power|sleep) button' | tail -n 1 | sed -E 's/.*id=([0-9]+)[^0-9].*/\1/')

4/3 Rozložení klávesnice

trvale změnit systémové rozložení#1
sudo dpkg-reconfigure keyboard-configuration
sudoedit /etc/default/keyboard
Zkontrolujte hodnoty XKBLAYOUT a XKBVARIANT, zda jsou nastaveny podle vaších představ; pokud ne, opravte je a uložte soubor.
Ukončete editor.
Restartujte operační systém.
dočasně nastavit okamžité rozložení klávesnice (jen v X)(obecně/příklady...)#2
setxkbmap rozložení [varianta]
setxkbmap cz
setxkbmap cz qwerty
setxkbmap ru
vypsat seznam dostupných rozložení klávesnice a jejich variant#3

5. Parametry příkazů

5/1 journalctl

journalctl [parametry]
○ --output=short-iso ○ --output=json-pretty ◉ --output=shortRůzné formáty výstupu (podporovány i další).
☐ -fBude čekat na nové položky a vypisovat je, jakmile se v logu objeví.
☐ -n počet-záznamů Omezí počet nejnovějších záznamů k vypsání (jinak vypíše všechny).
☐ -p prioritaVypíše pouze záznamy s alespoň uvedenou prioritou (debug, info, notice, warning, err, crit, alert, emerg). Lze zadat i přesný rozsah operátorem .., např. „-p notice..crit“.
☐ --since "YYYY-mm-dd HH:mm:ss"Vypíše pouze záznamy z uvedeného času a pozdější.
☐ -rSeřadí log od nejnovějších záznamů místo od nejstarších.
-u jednotkaOmezí výpis na záznamy související s uvedenou jednotkou; lze uvést víckrát, v takovém případě se zahrnou záznamy související s kteroukoliv z uvedených jednotek. Místo přesného názvu lze uvést i vzorek.
☐ -aVypíše přesně a úplně i zprávy obsahující netisknutelné znaky či zprávy mimořádně dlouhé (nezkoušeno).

6. Instalace na Ubuntu

Většina použitých příkazů je základní součástí Ubuntu, pouze příkazy numlockx, xdotool, inxi a neofetch si musíte doinstalovat, chcete-li je použít:

sudo apt-get install numlockx xdotool neofetch inxi

7. Tipy a zkušenosti

8. Další zdroje informací

1 Návratový kód je 0 pro notebook, 1 pro stolní počítač a 2, pokud to nelze zjistit. Ve virtuálním počítači dle mých zkušeností, tento přikaz zjistí druh fyzického počítače, na kterém virtuální počítač běží.
2 Podle dokumentace poskytuje záchranný režim základní služby a připojené souborové systémy pro pohodlnou práci, zatímco nouzový režim nespustí nic a očekává od uživatele, že si spustí služby, které potřebuje, a připojí potřebné souborové systémy. Ovšem při přechodu z běžícího systému těmito příkazy jsem tento rozdíl nepozoroval/a. Souborové systémy zůstaly i v nouzovém režimu normálně připojené.
3 U většiny služeb (ne úplně u všech) znamená automatické spouštění jejich spuštění při startu systému. Systémová jednotka s vypnutým automatickým spouštěním (disabled) stále může být spuštěna automaticky, pokud na ní závisí (jiná) automaticky spouštěná jednotka.
4 Je-li zakázáno spouštění systémové jednotky, nemůže být žádným způsobem spuštěna ani restartována. Zákaz vypne případné automatické spouštění jednotky a to nepůjde znovu nastavit. Pokud ale daná systémová jednotka právě běží, samotný zákaz ji nechá běžet.
5 Pro každou zadanou systémovou jednotku vypíše řádek „active“ nebo „inactive“; uspěje, pokud alespoň jeden řádek bude „active“.
6 Poznámka: pokud dané jednotce neodpovídá žádný běžící démon, vypíše tento příkaz „0“.
7 Poznámka: dynamické závislosti mezi jednotkami jsou obtížně pochopitelná věc, protože mohou vznikat a zanikat za běhu v reakci na změnu stavu systému. Nepředpokládejte, že je chápete, pokud jste podrobně nestudovali dokumentaci systemd.
8 Poznámka: tento příkaz dokáže přepnout i mezi X a virtuální konzolí!
9 Jméno počítače může být dlouhé maximálně 63 znaků a smí obsahovat pouze malá a velká písmena anglické abecedy, číslice. Může také obsahovat pomlčky, ale nesmí pomlčkou začínat ani končit. Např. „0---9Az“ je také dovolené jméno počítače.
10 Pozor! Do uvedeného času se započítává i čas strávený čekáním na inicializaci jiných jednotek; proto pokud má některá jednotka uvedený dlouhý čas, nemusí to znamenat, že zpomalení způsobuje ona!
11 Ne, opravdu to není Ctrl+Alt+Delete...
12 Poznámka: Skutečně důležitá je pouze poslední klávesa „B“; ty předchozí pouze vykonávají operace, díky nimž nebude restart tak drastický. Pokud chcete opravdu drastický reset, stačí na to klávesová zkratka „Alt“+„PrintScreen“+„B“.
13 Poznámka: Většina vypsaných operací je v jádru Ubuntu zakázána. Po stisknutí příslušné kombinace kláves se v takovém případě vypíše na konzoli zpráva, že operace je zakázána.
VimMakeBarvy, titulek a výzva terminálu