Linux/Přehled základních příkazů
Většina těchto příkazů je běžnou součástí linuxových distribucí. Přesto se vám ale může stát, že vám váš systém při pokusu o spuštění příkazu odpoví hláškou "command not found" (příkaz nebyl nalezen). Což může být zapříčiněno tím že příkaz je v adresáři ke kterému nemáte nastavenou cestu. Viz Linux:Adresářová struktura adresáře sbin
.
V takovém případě je řešením buď před spuštěním příkazu přidat cestu do proměnné PATH
stroj@user:~$ export PATH="$PATH:/sbin"
nebo zapsat spouštěný příkaz s plnou, nebo relativní cestou ke spustitelnému souboru
stroj@user:~$ /sbin/swapon
Pokud nevíte kde vlastně máte příkaz hledat, můžete použít k jeho vyhledání utilitu whereis
Čtení dokumentace
editovatapropos |
prohledává u manuálových stránek sekce název (NAME) a popis (DESCRIPTION) | součást instalačního balíku man-db |
info |
utilita pro čtení hypertextové dokumentace ve formátu pro info | samostatný instalační balík info |
man |
utilita pro čtení manuálových stránek | součást instalačního balíku man-db |
whatis |
vypisuje popis manuálové stránky uvedený v sekci název (NAME) | součást instalačního balíku man-db |
Analýza souborů
editovatfile |
Utilita, která podle tzv. magického čísla identifikuje soubor | samostatný instalační balík file |
wc |
Utilita která počítá počet znaků, slov a řádků | součást instalačního balíku coreutils |
md5sum |
Utilita pro výpočet kontrolního součtu pro ověření identity souboru | součást instalačního balíku coreutils |
file – utilita pro identifikaci souborů. Využívá pro to soubor vzorků /etc/magic.mime
user@stroj:~$ file -s /dev/sda /dev/sda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200; partition 1: ID=0x7, active, starthead 1, startsector 63, 31455207 sectors; partition 2: ID=0x83, starthead 254, startsector 31455270, 224910 sectors; partition 3: ID=0x5, starthead 254, startsector 31680180, 593457165 sectors, code offset 0x48
wc (zkratka z anglického word count = počet slov) – přečte buď standardní vstup nebo seznam souborů a pak generuje výstup, který obsahuje: počet znaků, počet slov, a počet řádků. V případě, že je v seznamu, nebo na vstupu více souborů, vypíše statistiku pro jednotlivé soubory + celkový souhrn.
user@stroj:~$ wc ideas.txt excerpt.txt 40 149 947 ideas.txt 2294 16638 97724 excerpt.txt 2334 16787 98671 total
První sloupec vypisuje počet řádků, druhý počet slov, a poslední počet znaků.
Novější verze wc rozlišují mezi počtem bytů a počtem znaků.
wc -l <názevsouboru> vypíše počet řádků wc -c <názevsouboru> vypíše bytů wc -m <názevsouboru> vypíše počet znaků wc -L <názevsouboru> vypíše délku nejdelšího řádku wc -w <názevsouboru> vypíše počet slov
md5sum – utilita počítající a ověřující 128-bitové MD5 hashe. MD5 hash (neboli kontrolní součet) funguje jako kompaktní digitální otisk prstu souboru. Je velmi nepravděpodobné, že by se vyskytly dva neidentické soubory, které by měly stejný md5 hash (funkce MD5 sice byla již kryptograficky prolomena,viz [1], přesto je velmi málo nepravděpodobné, že by se v systému objevily dva soubory se stejným kontrolním součtem.
Při jakékoliv změně souboru se mění i kontrolní součet, proto se md5sum používá ke kontrole integrity souboru, např. po jeho přenesení po síti, pro ověření zda nebyl poškozen.
user@stroj:~$ md5sum nazevsouboru 76c6dafd6569222312357fdfdbace3e5 nazevsouboru
Pro kontrolu stačí porovnat řetězec s původním kontrolním součtem, který byl proveden před přenesením souboru, pokud oba řetězce souhlasí, je soubor nezměněný.
Výstup z md5sum může být uložen do souboru ve formátu nazevsouboru.md5 Následujícím příkazem porovnáte soubor se souborem nazevsouboru.md5
user@stroj:~$ md5sum -c nazevsouboru.md5 nazevsouboru: OK
Použití kontrolního součtu pro ověření shody u řetězce znaků (po jeho napsání stiskněte dvakrát po sobě kombinaci kláves CTRL+D):
user@stroj:~$ md5sum textovyretezec1f129c42de5e4f043cbd88ff6360486f -
Utility pro práci se soubory
editovatPozn.: Tento přehled obsahuje také příkazy pro práci s adresáři, symbolickými odkazy, rourami a uzlovými body (zařízeními), což jsou speciální typy souborů.
cd |
změní aktuální pracovní adresář | interní příkaz shellu |
cp |
kopíruje soubory a adresáře | součást instalačního balíku coreutils |
dd |
kopírování souboru s konverzí | součást instalačního balíku coreutils |
install |
kopíruje soubory a nastavuje jejich atributy | součást instalačního balíku coreutils |
link |
vytváří "tvrdé" odkazy na soubor | součást instalačního balíku coreutils |
ln |
vytváří odkazy (linky) na soubory a adresáře, jak symbolické, tak pevné | součást instalačního balíku coreutils |
mkdir |
vytváří adresáře | součást instalačního balíku coreutils |
mkfifo |
vytváří pojmenované roury FIFO | součást instalačního balíku coreutils |
mknod |
vytváří speciální soubory zařízení (uzlové body) | součást instalačního balíku coreutils |
mv |
přejmenovává a přesouvá soubory a adresáře | součást instalačního balíku coreutils |
pushd |
změní aktuální pracovní adresář a přidá ho do zásobníku | interní příkaz shellu |
popd |
vrací do původního pracovního adresáře | interní příkaz shellu |
dirs |
vypisuje n-tou položku ze zásobníku zapamatovaných adresářů | interní příkaz shellu |
pwd |
vypíše absolutní cestu do aktuálního adresáře | součást instalačního balíku coreutils |
rm |
maže soubory | součást instalačního balíku coreutils |
rmdir |
maže adresáře | součást instalačního balíku coreutils |
shred |
bezpečně maže soubory (nejdříve přepíše jejich obsah) | součást instalačního balíku coreutils |
touch |
vytváří soubory a mění časové údaje souborů | součást instalačního balíku coreutils |
unlink |
ruší odkazy na soubor | součást instalačního balíku coreutils |
Procházení adresářů
editovatpwd (název vychází z anglického 'Print name of current Working Directory) má jedinou funkci: vypisuje celou cestu do aktuálního pracovního adresáře. Přesto, že existuje tento příkaz jako samostatná aplikace, váš shell může mít implementován vlastní variantu příkazu pwd.
cd – je-li zadán bez parametrů, automaticky přehodí uživatele do jeho domovského adresáře, který má nastaven v souboru /etc/passwd
.
cd (z angl. Change Directory ) je základní příkaz pro procházení mezi adresáři. Spolu s ls je jedním z nejpoužívanějších příkazů.
- Bez parametrů hodí uživatele automaticky do jeho domovského adresáře nastaveného v souboru
/etc/passwd
- Cestu mu lze předat jako absolutní (tj. od kořene – / dál ) nebo relativní. Relativní cesta začíná vždy v aktuální pozici, kterou lze zjistit příkazem pwd
- Znak ~ (tilda) před lomítkem zastupuje cestu do domovského adresáře aktuálního uživatele.
- Jsou-li před lomítkem dvě tečky, pak to znamená, že se má začít o úroveň výš a pokračovat tam. Jedna tečka zastupuje aktuální pozici.
Viz příklad:
user@stroj:~$ pwd /home/user user@stroj:~$ cd podadresar user@stroj:~$ pwd /home/user/podadresar user@stroj:~$ cd ./ user@stroj:~$ pwd /home/user/podadresar user@stroj:~$ cd ../ user@stroj:~$ pwd /home/user user@stroj:~$ cd /home/user/jiny_podadresar user@stroj:~$ pwd /home/user/jiny_podadresar user@stroj:~$ cd ../podadresar user@stroj:~$ pwd /home/user/podadresar user@stroj:~$ cd user@stroj:~$ pwd /home/user user@stroj:~$ cd ~/podadresar user@stroj:~$ pwd /home/user/podadresar
chroot (z angl. Change ROOT – změnit kořen) je příkaz, kterým spustíte novou instanci shellu, která bude mít nastaven jako kořen adresář předaný příkazu chroot. Využívá se toho především při instalaci na nový disk, pro vytvoření odděleného prostředí.
Použití příkazů pro práci s adresáři
editovatmkdir (z angl. MaKe DIRectories) vytvoří adresář (nebo adresáře), pokud již ovšem neexistují. K příkazu lze přidat další parametry:
- -m nebo --mode=MODE – nastaví přístupová práva (podobně jako příkaz chmod)
- -p nebo --parents – vytvoří rodičovské adresáře
- -v nebo --verbose – vypíše hlášku pro každý vytvořený adresář
user@stroj:~$ mkdir -p -v -m 755 Nový/adresář
Výsledkem příkazu bude vytvoření adresáře s názvem Nový
ve kterém bude další adresář s názvem adresář
ls je základní utilita pro výpis obsahu adresáře. Nejčastěji používané parametry, které lze vzájemně kombinovat:
- -a vypíše všechny soubory (včetně skrytých souborů, tj. těch co začínají tečkou)
- -l aktivuje podrobný výpis vlastností jednotlivých souborů
- -i ve výpisu bude uvedeno také číslo i-nodu
- -t výpis souborů je setříděn podle času poslední změny souboru
- -r výpis je proveden v obráceném pořadí
user@stroj:~$ ls -ali test*.txt 297845 -rw-r--r-- 2 want users 1086 1. dub 13.22 test.txt 297845 -rw-r--r-- 2 want users 1086 1. dub 13.22 test_hardlink.txt 1908844 lrwxrwxrwx 1 want users 19 24. dub 10.08 test_symlink.txt -> test.txt
Příkaz vypsal všechny souboru vyhovující vzorku test*.txt
, tj. začínají řetězcem "test" a končící řetězcem "txt". Podle čísla i-nodu můžeme vidět že názvy souborů test.txt a test_hardlink.txt odkazují na jeden a týž soubor, zatímco test_symlink.txt je odkazem. (O symlincích a hardlincích viz odstavec Pevné a symbolické odkazy v linuxu)
dir je pouhým synonymem příkazu ls. Poněkud jsem nepochopil jeho existenci v systému, neboť jde o týž binární soubor, ovšem pod jiným názvem. Logické by mi přišlo, kdyby byl nalinkován tento binární soubor pevný odkazem.
tree je utilita pro vypsání adresářového stromu. Bez parametrů vypíše adresářovou strukturu počínaje aktuálním adresářem.
user@stroj:~$ tree -H -D > index.html
Parametr "-H" určuje, že výstup má být naformátován jako HTML stránka. Přesměrováním do souboru tedy vznikne HTML stránka, u které lze klikat na názvy adresářů a souborů. Je-li přidán parametr "-D" je do výstupu zahrnuto také datum poslední modifikace. Dříve se tato utilita využívala k vygenerování indexové stránky u webových adresářů s uloženými soubory. Dnes však, pokud má váš server povoleno vylistování adresářů, to již není nutné.
Použití zásobníku zapamatovaných adresářů
editovatPro přecházení mezi adresáři lze využít i tzv. zásobník zapamatovaných adresářů a vestavěných příkazů shellu. Pracovním adresářem je pak vždy ten, který je první položkou zásobníku. Položky do zásobníku lze nejen přidávat nebo z něj odebírat, ale také u nich měnit pořadí a tím přecházet podle potřeby mezi pracovními adresáři. Z následujícího příkladu snad poznáte lépe, jak to funguje a jaké příkazy se pro práci s ním používají.
user@stroj:~$ dirs ~ user@stroj:~$ pushd test user@stroj:~/test$ pushd test ~/test ~ user@stroj:/tmp$ pushd test /tmp ~/test ~ user@stroj:/tmp$ pushd +1 ~/test ~ /tmp user@stroj:~/test$ popd ~ /tmp user@stroj:~$ dirs ~ /tmp user@stroj:~$ popd /tmp user@stroj:/tmp$ popd bash: popd: directory stack empty
dirs – nemění aktuální pracovní adresář, pouze vypíše n-tou položku ze zásobníku zapamatovaných adresářů. Položky jsou počítané od nuly – ta, která je zároveň pracovním adresářem, je vždy na nulté pozici. Při použití záporného znaménka se počítá pořadí položek obráceně, tj. od té, co byla vložená jako první, až k té, co je zároveň pracovním adresářem. Na vlastní posloupnosti položek v zásobníku se tím však nic nemění. Bez udaného pořadí položky vypíše celý obsah zásobníku zapamatovaných adresářů.
user@stroj:~$ dirs +1
S příkazem lze zároveň použít parametr -l, který způsobí, že ve výpisu zásobníku budou znaky "~" (tilda) expandovány.
Příkaz pushd přidává do zásobníku další adresáře.
user@stroj:~$ pushd test
V tomto příkladu přidá do zásobníku adresář s názvem test
(neexistuje-li, skončí provádění příkazu oznámením chyby) a nastaví jej jako pracovní adresář.
user@stroj:~$ pushd +1
V tomto případě pushd změní pořadí položek v zásobníku tak, že n-tou položku (v našem případě předposlední položku) přesune dopředu a nastaví jako pracovní adresář. Rovněž u tohoto příkazu lze pro změnu pořadí položek v zásobníku použít opačného znaménka.
Příkazem popd se naopak položky ze zásobníku odstraňují.
user@stroj:~$ popd +1
Příkaz s volbou "+1" uvedený v příkladu odstraní n-tou položku ze zásobníku (v uvedeném příkladu druhou v pořadí). Pracovní adresář se přitom nemění. Je-li příkaz zadán pořadového čísla položky, nebo s pořadovým číslem "0", tak se ze zásobníku odstraní aktuální adresář, a aktivním pracovním adresářem se stane ten, co byl pozici "1". Rovněž u tohoto příkazu lze pro změnu pořadí položek v zásobníku použít opačného znaménka.
Kopírování, přesun a mazání souborů
editovatcp (z angl. copy – vyrobit kopii) vytváří duplicitní soubory. Prvním parametrem je cesta k originálu a druhým cíl do kterého má být kopie umístěna. Cesty mohou být zadány jak absolutně, tak relativně.
- Je-li cílem již existující soubor, tak cp přepíše jeho obsah, název zůstane zachován.
- Je-li cílem adresář, tak cp vloží kopii do něj, pod stejným názvem, jaký měl původní soubor.
user@stroj:~$ cp original kopie
Defaultně cp kopíruje pouze soubory, nikoliv adresáře. Toto chování však lze potlačit přidáním volby -r, která aktivuje rekurzivní kopírování
user@stroj:~$ cp -r adresar kopie_adresare
rm (z angl. remove – odstranit) je příkaz pro mazání souborů. Pokud mu při mazání předáme parametr -r, tak smaže rekurzivně vše, včetně adresářů
Chceme-li však smazat adresář, použijeme příkaz rmdir. Ten vyžaduje, aby byl odstraňovaný adresář prázný, tj. nesmí obsahovat žádné další soubory ani adresáře. Je to jakási pojistka, abychom něco nemohli smazat neúmyslně.
Za normálních okolností se příkazem rm pouze odstraní záznam o souboru. Kdežto utilita shred přepíše samými nulami také prostor v němž byl uložen obsah souboru.
Pevné a symbolické odkazy v Linuxu
editovatOdkazy (lze se setkat také s anglickým výrazem link) jsou v unixových systémech dvojí povahy: pevné a symbolické.
- Pevné odkazy
- Jinak také tvrdé, umožňují používat pro jeden a týž soubor více jmen, aniž by jej bylo nutné kopírovat. Využívají zvláštního mechanismu, který spočívá v tom, že jména souborů jsou uchovávána odděleně od i-uzlů s daty. V každém i-uzlu je místo vlastního názvu uvedeno pouze jakési id. Vytvoříme-li nový pevný odkaz, tak se do tabulky s názvy souborů pouze přidá další položka odkazující na stejné id.
- Symbolické odkazy (symlinky)
- Používají se mnohem častěji. Na rozdíl od odkazů pevných je lze aplikovat i na adresáře a soubory, a to i na jiné fyzické datové svazky. Symbolické odkazy totiž nejsou pouhým přidáním dalšího jména souboru, ale speciální soubory, které mají v datovém prostoru uloženo kam mají směřovat. Při jejich vytváření se nijak nekontroluje existence a dostupnost cílového objektu.
Důležité poznámky:
- Pevné odkazy lze vytvářet pouze v rámci jednoho fyzického diskového oddílu.
- Nově vytvořený odkaz náleží stejnému uživateli co vlastní původní soubor, bez ohledu na to, kdo link vytvořil.
- Nelze vytvořit pevný odkaz na adresář.
- Pozor na adresování z adresáře připojeného symbolickým linkem. Příkaz
ls ../
nevypíše obsah adresáře v němž se nalézá symbolický link, ale adresáře v němž se nalézá přilinkovaný adresář.
ln – obslužný program pro vytvoření odkazu, příkaz je součástí balíku coreutils.
ln [options] existing-file new-link ln [options] existing-file-list directory
Souhrnné informace
Obslužný program ln vytváří implicitně pevný odkaz (hardlink). Pevný odkaz nelze prakticky odlišit od jména souboru. Na soubor se lze odkazovat pomocí jeho jména nebo jména pevného odkazu vytvořeného příkazem ln. Všechny pevné odkazy na soubor musejí být definovány v tomtéž souborovém systému jako samotný soubor. První formát příkazu ln můžete použít k vytvoření odkazu mezi existujícím jménem souboru a novým jménem. Druhý formát můžete použít k vytvoření odkazů existujících souborů do různých adresářů. Nové odkazy budou mít stejná jednoduchá jména jako původní soubory, ale budou mít jiná plná jména (tj. jména včetně cesty). Obslužný program ln můžete také použít k vytvoření symbolických odkazů. Na rozdíl od pevného odkazu může symbolický odkaz existovat v jiném souborovém systému. Také platí, že symbolický odkaz může spojovat soubor s adresářem.
Argumenty
Argument existing-file je jméno souboru, ke kterému chcete definovat nový symbolický odkaz. Argument new-link představuje jméno celé cesty k novému odkazu. Když vytváříte symbolický odkaz, můžete jako argument existing-file použít jméno adresáře; jinak se jméno adresáře použít nemůže. V druhém formátu představuje argument existing-file-list cesty k obyčejným souborům, pro které se má vytvořit nový odkaz. Obslužný program ln nastaví nové odkazy tak, že se objeví v adresáři uvedeném prostřednictvím argumentu directory. Jednoduchá jména souborů v adresáři definovaném argumentem directory jsou stejná, jako jednoduchá jména souborů definovaná seznamem existing-file-list.
Volby
- -backup (-b) – když má obslužný program ln zrušit některé soubory, pak je po zadání volby -b bude zálohovat (na konec jména souboru se přidá znak ~). Tato volba funguje pouze s volbou -force.
- -force (-f) – normálně platí, že program ln nevytváří nový odkaz, pokud již nějaký odkaz new-link existuje; po zadání volby -f se odkaz new-link před vytvořením nového odkazu zruší; když se navíc použije volba -backup, pak se před zrušením odkaz new-link zálohuje.
- -interactive (-i) – jestliže odkaz new-link existuje, bude po zadání této volby program ln chtít potvrdit jeho zrušení; pokud jako odpověď zadáte y nebo yes, pak se existující odkaz před vytvořením nového odkazu zruší; jestliže jako odpověď zadáte n nebo no, nový odkaz se nevytvoří.
- -symbolic (-s) – po zadání této volby se vytvoří symbolický odkaz; když volbu -s použijete, pak argumenty existing-file a new-file mohou obsahovat jména adresářů a navíc mohou být v různých souborových systémech.
Příklady
Takto vytvoříme odkaz mezi souborem memo2 v adresáře /home/vasek/matematika a pracovním adresářem. Odkaz se objeví jako memo2 (bude mít stejné jméno souboru v pracovním adresáři).
$ ln /home/vasek/matematika/memo2
Další příklad vytvoří odkaz na tentýž soubor. Nyní se bude nový odkaz jmenovat new_memo a opět bude umístěn v pracovním adresáři.
$ ln /home/vasek/matematika/memo2 new_memo
V dalším příkladu vytvoříme odkaz, který vytvoří jméno souboru v jiném uživatelském adresáři. Když má uvedený příkaz fungovat, musíte mít právo zapisovat a prohlížet daný adresář, ve kterém se má nový odkaz vytvořit. Když jste vlastníkem souboru, můžete použít obslužný program chmod a dát druhému uživateli právo do souboru zapisovat.
$ ln /home/vasek/matematika/memo2 /home/tomino/new_memo
V předposledním příkladu vytvoří k existujícímu souboru symbolický odkaz nazvaný jako memo3. Vytvoří jej v adresáři /home/vasek/matematika. Symbolický odkaz je v jiném souborovém systému /tmp. Pomocí příkazu ls -l se zobrazí informace o vytvořeném symbolickém odkazu.
$ pwd /home/vasek/matematika $ ln -s memo3 /tmp/memo $ ls -l /tmp/memo lrwxrw.rwx l vasek pubs 7 Jul 26 12:25 /tmp/memo -> memo3
V posledním příkladu se příkaz pokusí vytvořit symbolický odkaz nazvaný jako memo1 k souboru memo2. Protože soubor memo1 existuje, program ln odkaz odmítne vytvořit. Když použijete volbu -interactive, program ln se vás zeptá, zda chcete existující soubor memo1 nahradit symbolickým odkazem. Když odpovíte yes nebo y, symbolický odkaz se vytvoří a původní soubor memo1 se zruší.
$ ls -l memo? -rw-rw-r-- l vasek group 335 Jul 28 15:55 memo1 -rw-rw-r-- l vasek group 825 Jul 28 15:56 memo2 $ ln --symbolic memo2 memo1 ln: memo1: File exists $ ln --symbolic --interactive memo2 memo1 ln: replace ´memo1´? y $ ls -l memo? -rwxrwxrwx l vasek group 5 Jul 28 15:56 memo1 -> memo2 -rw-rw-r-- l vasek group 825 Jul 28 15:56 memo2
Poznámky
Pevný odkaz představuje záznam v adresáři odkazující na soubor. Operační systém vytvoří první odkaz na soubor, když jej například vytvoříte pomocí editoru, jiného programu nebo přesměrovaného výstupu. Další odkazy na soubor můžete vytvářet pomocí příkazu ln a rušit je můžete pomocí příkazu rm. Když chcete zjistit, kolik odkazů na daný soubor existuje, zadejte příkaz ls -l.
Když představuje argument new-link jméno existujícího souboru, program ln nový odkaz nevytvoří (pokud ovšem neuvedete volbu -force nebo při volbě -interactive nezadáte odpověď yes).
Symbolické odkazy můžete používat bez ohledu na souborový systém a také je můžete používat pro adresáře. Když použijete příkaz ls -l a v adresáři existuje symbolický odkaz, pak se o něm zobrazí informace. Obslužný program ln zobrazí za jménem odkazu znaky -> a za nimi zobrazí jméno odkazovaného souboru.
link je příkaz pro vytvoření pevného odkazu, lze jej nahradit použitím příkazu ln
.
readlink
unlink
touch
Obslužný program pro aktualizaci času poslední modifikace souboru.
Syntaxe
touch [volby] file-list
Obslužný program aktualizuje čas poslední modifikace souboru. Čas můžete specifikovat v příkazovém řádku. Nejčastěji se program touch používá ve spojení s programem make.
Argument file-list obsahuje seznam jmen souborů, pro které se má nastavit čas poslední modifikace.
Volby:
- Jestliže se nezadá volba -c, vytvoří program touch ty soubory uvedené v seznamu file-list, které neexistují. Pokud se program touch pustí bez voleb -d nebo -t, použije se aktuální datum a čas.
- --date datestring nebo -d datestring
- Po zadání volby -d se čas poslední modifikace souboru nastaví podle stanovených hodnot v řetězci datestring. Pro řetězec datestring je povolena většina známých formátů. Pokud řetězec datestring neobsahuje některé komponenty, doplní se podle aktuálních hodnot. Tato volba nesmí být použita s volbou -t
- --no-create nebo -c
- Pokud soubory uvedené v seznamu file-list neexistují, tak s touto volbou nebudou ani vytvořeny.
- -t nnddhhmm[cc[yy]][.ss]
- Pomocí volby -t se specifikuje čas.
- nn – specifikuje měsíc (01–12)
- dd – specifikuje den (01–31)
- hh – specifikuje hodinu (00–23)
- mm – specifikuje minuty (00–59)
- yy – je nepovinná a určuje poslední dvě cifry z roku.
- cc – může být také zadáno století, ale pokud je zadána položka yy
- .ss – volitelný parametr určuje sekundy v intervalu (00-59); tato položka musí být od ostatních oddělena tečkou. Kterákoli z volitelných položek bude nahrazena, pokud bude tečka chybět. Nesmí být použito s volbou -d
- Pomocí volby -t se specifikuje čas.
- -time==atime nebo -time=access nebo -a
- Jestliže se zada volba -a, bude se aktualizovat pouze čas posledního přístupu k souboru a čas poslední modifikace zůstane nezměněn
- -time==mtime nebo -time=modify nebo -a
- Jestliže se zadá volba -m, bude se aktualizovat pouze čas poslední modifikace souboru a čas posledního přístupu zůstane nezměněn
Příkazy pro práci se speciálními soubory
editovatmkfifo je utilita, kterou se vytváří speciální typ souboru – tzv. pojmenovaná roura (FIFO, zkratka z angl. First In – First Out)
mknod je utilita, kterou se vytváří speciální zařízení. Zařízení jsou identifikována hlavním a vedlejším číslem – viz dále.
Každý uzlový bod zařízení v linuxovém systému je adresován tzv. hlavním (major) a vedlejším (minor) číslem. Tato čísla souvisí s identifikací zařízení jádrem. Jádro má číslovanou sadu řadičů (controller) a ty zastupují jednotlivé hardwarové sběrnice nebo virtuální zařízení. Hlavní číslo (major number) je číslo řadiče, na kterém je „zavěšeno“ hardwarové zařízení. Vesměs je to dáno jeho typem, např. disky mají hlavní číslo 8, kdežto CD či DVD mechaniky 21 atd. Vedlejší číslo (minor number) pak určuje pořadové číslo zařízení. Další příklady najdete v kapitole Adresářová struktura.
Informace o hlavních a vedlejších číslech zařízení můžete najít ve zdrojovém kódu linuxového jádra, máte-li je nainstalováno včetně dokumentace. A to v souboru /usr/src/linux/Documentation/devices.txt
(v případě, že ve vaší instalaci ukazuje symbolický odkaz /usr/src/linux na adresář se zdrojovým kódem jádra).
Čtení a úprava obsahu souborů
editovatmore |
Prohlížení obsahu souborů | součást instalačního balíku util-linux | |
less |
Podobná funkčnost jako u příkazu more. Má však při čtení souboru mnohem větší možnosti, neboť umožňuje vyhledávat podle vzorků, využívat posunu oběma směry aj. | je dostupný jako samostatný instalační balíček less. | |
head |
Vypisuje začátek souboru | Výstup částí souborů | součást instalačního balíku coreutils |
tail |
Vypisuje konec souboru | součást instalačního balíku coreutils | |
split |
Rozdělí soubor soubor na části dané numericky danou velikostí | součást instalačního balíku coreutils | |
csplit |
Rozdělí soubor v místech udaných kontextem (řetězec) | součást instalačního balíku coreutils | |
cat |
Spojí soubory do jednoho výstupu | Modifikace obsahu souborů (spojování, číslování..) | součást instalačního balíku coreutils |
tac |
Spojí soubory do jednoho výstupu v obráceném pořadí | součást instalačního balíku coreutils | |
nl |
Přidá k výpisu číslování řádků | součást instalačního balíku coreutils | |
od |
Vypíše obsah souboru v jiném formátu, výchozí je oktálové kódování | součást instalačního balíku coreutils | |
fmt |
Formátování obsahu souborů | součást instalačního balíku coreutils | |
pr |
součást instalačního balíku coreutils | ||
fold |
součást instalačního balíku coreutils | ||
uniq |
Operace na tříděných souborech | součást instalačního balíku coreutils | |
sort |
součást instalačního balíku coreutils | ||
ptx |
součást instalačního balíku coreutils | ||
comm |
součást instalačního balíku coreutils | ||
tsort |
součást instalačního balíku coreutils | ||
cut |
Operace na polích řádky | součást instalačního balíku coreutils | |
paste |
součást instalačního balíku coreutils | ||
join |
součást instalačního balíku coreutils | ||
tr |
Operace na znacích | součást instalačního balíku coreutils | |
expand |
součást instalačního balíku coreutils | ||
unexpand |
součást instalačního balíku coreutils |
Příkazy informačního charakteru
editovatdf |
vypisuje celkové volné místo na disku (blokovém zařízení) | součást instalačního balíku coreutils |
dir |
vypisuje obsah adresáře stejně jako příkaz ls -l |
součást instalačního balíku coreutils |
du |
vypisuje využití diskového prostoru (adresáře) | součást instalačního balíku coreutils |
ls |
vypisuje obsah adresáře | součást instalačního balíku coreutils |
readlink |
vypíše na standardní výstup pouze cíl symbolického linku | součást instalačního balíku coreutils |
tree |
vypsání struktury adresářového stromu | samostatný instalační balík tree |
vdir |
vypisuje obsah adresáře stejně jako příkaz ls -al |
součást instalačního balíku coreutils |
Příkazy pro zjišťování množství obsazeného prostoru
editovatPříkaz du oznamuje diskovou kapacitu alokovanou soubory, adresáři a podobně.
du [-abcklsxDLS] [--all] [--total] [--count-links] [--summarize] [--bytes] [--kilobytes] [--one-file-system] [--separate-dirs] [--dereference] [--dereference-args] [cesta...]
Příkaz pro každý zadaný argument vypíše diskovou kapacitu, kterou objekt adresovaný argumentem zabírá. Implicitně se velikost vypisuje v KB. Definujeme-li proměnnou prostředí POSIXLY_CoRRECT, bude se informace vypisovat v 512bajtových blocích. Příkaz akceptuje následující volby:
- -a nebo --all
- Kapacita se bude vypisovat pro jednotlivé soubory, ne pouze pro celé adresáře
- -b nebo --bytes
- Velikost se bude oznamovat v bajtech
- -c nebo --total
- Vypíše se celková kapacita získaná součtem kapacit jednotlivých zpracovaných argumentů. Volba se používá tehdy, pokud nás zajímá např. kapacita adresáře vyjma některých souborů. Celková kapacita se vypisuje jako poslední položka pod označením total
- -k nebo --kilobytes
- Informace se vypisuje v KB místo 512bajtových bloků. Touto volbou přebíjíme nastavení učiněné proměnnou POSIXLY_CORRECT.
- -l nebo --count-links
- Vypíše velikost i opakujících se (jako tvrdé odkazy) souborů
- -s nebo --summarize
- Pro každý zadaný argument se vypíše pouze celková hodnota
- -x nebo--one-file-system
- Adresáře, které se fyzicky nacházejí v jiném systému souborů, se nezpracovávají
- -D nebo--dereference-args
- Symbolické odkazy uvedené jako argumenty se rozvinou a zpracuje se položka, na kterou symbolický odkaz ukazuje, místo vlastního symbolického odkazu. Ostatní symbolické odkazy nejsou touto volbou dotčeny. Význam spočívá ve snadném zjištění alokovaného diskového prostoru známými adresáři, do kterých se dostáváme nejčastěji přes symbolické odkazy (např. /usr/tmp)
- -L nebo --dereference
- Podobně jako -D se rozvinou symbolické odkazy. Rozdíl je v tom, že se rozvíjejí všude a ne jenom v argumentech.
- -S nebo --separate-dirs
- Vypočte a oznámí se velikost každého adresáře a podadresáře zvlášť.
Příkazem df zjišťujeme obsazenou a volnou diskovou kapacitu na jednotlivých fyzických systémech souborů.
df [-aikPv] [-ttyp] [-xtyp] [-all] [--inodes] [--type=typ] [--exclude-type=typ] [--kilobytes] [--portability] [cesta...]
Příkaz vypisuje informace o systému souborů pro každý ze zadaných argumentů. Neuvedeme-li žádný, vypíší se informace o všech aktuálně připojených systémech souborů. Implicitně se údaje uvádějí v KB; pokud však definujeme proměnnou prostředí POSIXLY_CORRECT, vypisují se údaje v 512bajtových blocích. Pokud je argumentem úplné jméno speciálního souboru diskového zařízení s připojeným systémem souborů, potom se vypíší informace o tomto systému souborů místo systému souborů, ve kterém se odkazovaný speciální soubor nachází (zpravidla kořenový systém souborů). GNU implementace příkazu df neumí vypisovat informace o nepřipojených discích. A to proto, že provedení této operace je systémově závislé a GNU df by se špatně přenášelo na různé systémy. Příkaz df rozpoznává tyto volby:
- -a nebo -all: Do výpisu se zahrnou i ty systémy souborů, které mají 0 bloků. Tyto systémy souborů se implicitně ignorují. Jde zpravidla o pomyslné systémy souborů se speciálním významem (např. vstupní body pro automount).
- -i nebo --inodes
- Místo informace o obsazených a volných blocích se vypisuje informace o obsazených a volných i-uzlech
- -k nebo --kilobytes
- Informace se vypisuje v KB místo 512bajtových bloků. Touto volbou přebíjíme nastavení učiněné proměnnou POSIXLY_CORRECT.
- --no-sync: Před čtením z disku se neprovádí operace sync. V systémech s velkým množstvím disků tak příkaz skončí dříve.
- -P nebo --portability
- Výstup bude ve formátu podle normy POSIX. Vypadá jako implicitní tvar, ale informace o jednom každém systému souborů se vypíše právě na jeden řádek. V implicitním tvaru se totiž pro lepší čitelnost se jméno připojovaného disku od ostatních informací oddělí novým řádkem tehdy, pokud je delší než 20 znaků (typické pro vzdálené disky, kde je i jméno počítače).
- --sync
- Před zjišťováním údajů z disků se provede operace sync. Tím získáme aktuální údaje, ale v systémech s veklým počtem disků může tato operace trvat poměrně dlouho.
- -ttyp nebo type=typ
- Do výpisu se zahrnou jenom ty systémy souborů, které jsou zadaného typu. Více typů můžeme zadat více volbami -t. Na místě typu se může vyskytnout některý z následujících (seznam je nutně neúplný)
- nfs: Systém vzdáleně (z jiného počítače po síti) připojovaných disků.
- ext2: Jeden ze základních systémů souborů pro ukládání dat na disk používaný Linuxem.
- msdos: Systém souborů v oblasti MS-DOSu
- -xtyp nebo --exclude-type=typ
- Do výpisu se nezahrnou systémy souborů vyjmenovaných typů. Více typů zadáváme více volbami -x. Implicitně se vypisují všechny systémy souborů.
- -v
- Volba se v GNU implementaci df ignoruje. Používá ji Systém V.
df vypíše jména právě připojených disků/oddílů, jejich velikost celkovou/užitou/zbývající/ v procentech a adresáře, do nichž jsou disky/oddíly připojeny
df jméno_souboru zobrazí to samé jako samotné df, ale jen pro disk/oddíl, na kterém leží soubor zadaného jména
df -T vypíše i typy zobrazovaných svazků (ext3,proc)
df -a ukáže i oddíly s nulovou fyzickou velikostí jako jsou proc, dev.
Jdou i kombinace df –aT atd.
Příkazy pro správu přístupových práv
editovatchgrp |
změní vyjmenovaným souborům skupinu vlastníků | součást instalačního balíku coreutils |
chmod |
změní přístupová práva k souborům | součást instalačního balíku coreutils |
chown |
změní vyjmenovaným souborům vlastníka, případně i skupinu | součást instalačního balíku coreutils |
Nástroje pro archivaci
editovatPozn.: Archivační nástroje v linuxu na rozdíl od těch které se obvykle používají v MS Windows, nemusí nutně provádět také kompresi. Proto je tabulka rozdělena.
afio |
archívy kompatibilní se cpio přenositelné mezi unixovými systémy |
ar |
archivační nástroj ze kterého vyšel tar |
cpio |
vytváří archívy přenositelné mezi unixovými systémy |
pax |
nástroj zastřešující různé archivační a komprimační nástroje. Umožňuje používat parametry pro kompresi archívu. |
tar |
původně nástroj pro archivaci na pásku. Umožňuje používat parametry pro kompresi archívu. |
arj |
|
gzip |
|
gunzip |
|
bzip2 |
kompresní nástroj používající při kompresi Burrows-Wheeler transformaci a Huffmanův kompresní algoritmus |
p7zip |
kompresní nástroj používající kompresní algoritmus LZMA |
unrar |
dekompresní nástroj používající proprietární dekompresní algoritmus podobný LZMA |
unzip |
dekompresní nástroj pro zip archívy |
zip |
kompresní nástroj používající kompresní algoritmus LZW |
Vyhledávání
editovatPro vyhledávání se v Linuxu používají především dvě důležité aplikace find a grep. Každá z nich plní svou specifickou funkci a jejich vzájemnou kombinací lze dosáhnout opravdu efektivních výsledků.
Kromě nich lze také použít při hledání i některé pomocné utility jako jsou locate, whereis nebo which
find |
prohledává adresářovou strukturu a výstup filtruje prostřednictvím vzorků | součást instalačního balíku findutils |
grep |
vyhledává vzorky v obsahu souborů | samostatný instalační balík grep |
whereis |
vyhledává příkaz a s ním související zdrojové a manuálové stránky v nastavených cestách | součást instalačního balíku util-linux |
which |
prohledává nastavené cesty a zjišťuje zda příkaz volá samostatnou utilitu | součást instalačního balíku debianutils |
locate |
vyhledává soubory pomocí vzorků v pomocné databázi | samostatný instalační balík locate |
Hledání souborů podle vzorků a vlastností
editovatfind vždy prochází celou větev adresářové struktury, která začíná udanou cestou. Přitom hledá ty soubory (i adresář je souborem), které splňují zadané podmínky. Najde-li takové, pak může nad těmito nalezenými soubory provádět různé operace počínaje vypsáním informace o jejich umístění po spouštění nejrůznějších skriptů. find má ohromné množství parametrů, proto doporučuji studovat pro náročnější nasazení jeho manuálovou stránku. Následujících příklady pouze demonstrují nejčastější možnosti použití a popisují jak vlastně find pracuje.
user@stroj:~$ find
Příkaz bez parametrů vypíše seznam všech souborů a adresářů v aktuálním adresáři, a to rekurzívně, tedy i vnořené adresáře a soubory.
user@stroj:~$ find /etc
Prvním, nepovinným parametrem je výchozí adresář pro prohledávání. V následujících příkladu, kdy má find za úkol najít soubor s názvem soubor.txt
jej vynechám. Bude se tedy prohledávat pouze adresář ve kterém právě jsem. Pokud find soubor najde, pak k němu vypíše plnou cestu. Pokud ne, nevypíše nic.
user@stroj:~$ find -name soubor.txt
V následujícím příkladu má za úkol vypsat všechny soubory, jejichž název končí txt. Povšimněte si, že hledaný vzorek je uzavřen do uvozovek, a znak hvězdičky (*) umožňuje tzv. "globbing", tj. že vzorku vyhoví všechny názvy které na řetězec txt končí.
user@stroj:~$ find -name "*txt"
Vyhledání jen souborů typu adresář (directory).
user@stroj:~$ find -type d
A nyní moje oblíbené použití. Jak už bylo zmíněno, s nalezenými soubory je možno pracovat dále tak, že jsou předhozeny nějakému jinému příkazu. V našem případě jsou všechny soubory typu soubor (file) s plnou cestou předány (přes dvojici složených závorek) k dalšímu zpracování příkazu chmod, který jim nastaví práva na 664. Příkaz je nutné ukončit středníkem, který musí být "escapován" obráceným lomítkem (jinak by se jej pokoušel brát jako součást vloženého příkazu). A složené závorky je vhodné uzavřít do jednoduchých uvozovek, pro případ, že by se mezi nalezenými vzorky vyskytly některé s mezerou. Během akce se pak postupně nahrazují výsledky hledání.
user@stroj:~$ find -type f -exec chmod 664 '{}' \;
Na závěr ve stručnosti ještě několik nejčastějších příkladů použití:
user@stroj:~$ find -name "*~" -exec rm -i '{}' \;
Smaže záložní kopie, tzn. soubory, jejichž název končí vlnovkou. Pro jistotu je přidán parametr -i, který znamená, že každé mazání budeme muset potvrzovat zvlášť.
user@stroj:~$ find -type f -exec fgrep -Hn kolo '{}' \;
Vyhledá "kolo" v obsahu všech souborů v aktualním adresáři a výsledek vytiskne ve formátu: cesta_k_souboru:cislo_radky:nalezeny_retezec
user@stroj:~$ find /moje/zalohy -type f -ctime +30 -exec rm -f '{}' \;
Projede adresář zalohy a smaže tam všechny soubory (type -f), které jsou staré víc než 29 dní.
locate funguje podobně jako find ovšem pracuje mnohem rychleji, protože neprohledává souborový systém, ale databázi. Tu je ovšem třeba udržovat aktuální. Aktualizaci databáze pro locate však smí spouštět pouze superuživatel (root). Abyste nebylo nutné provádět aktualizaci ručně, lze využít cron, nebo – pokud počítač vypínáte – anacron.
root@stroj:~# updatedb
user@stroj:~$ locate mdadm.conf /etc/mdadm/mdadm.conf /usr/share/doc/mdadm/examples/mdadm.conf-example /usr/share/man/man5/mdadm.conf.5.gz /var/lib/dpkg/info/mdadm.conffiles /var/lib/dpkg/info/mdadm.config /var/lib/mdadm/mdadm.conf-generated
whereis prohledává cesty se spustitelnými soubory, zdrojové soubory a manuálové stránky. Viz příklad:
user@stroj:~$ whereis find find: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/share/man/man1/find.1.gz
První tři údaje ve výpisu jsou odkazy na spustitelné (binární) soubory, zatímco ten poslední je na manuálovou stránku.
which prohledává pouze cesty se spustitelnými soubory. Když zjistí, že příkaz volá samostatnou utilitu zobrazí její plnou cestu:
user@stroj:~$ which find /usr/bin/find
Hodí se, když se nám zdá, že program nedělá to, na co jsme zvyklí. Takto můžeme zjistit, že se nám spouští něco jiného. Je to ale dost raritní situace. O něco výše u příkladu použití příkazu whereis jste si mohli povšimnout, že find bydlí ve třech různých lokacích, pochopitelně je pak pro nás docela zajímavé, který (angl. which) z nich se vlastně spouští, pokud ho zavoláte bez plné cesty. Příkaz which má volitelný parametr -a, který vypíše všechna umístění zadaného příkazu.
user@stroj:~$ which -a whereis /usr/bin/whereis /usr/bin/X11/whereis
Vyhledávání vzorků v souborech
editovatgrep na rozdíl od příkazu find neprochází adresářovou strukturu, ale obsah předaných souborů. Ty můžeme předat buď najednou, jako seznam na příkazovém řádku, nebo pomocí vzorku. Jenže při větším počtu souborů narazíme na omezení příkazové řádky. Pak je vhodnější jej použít v kombinaci s příkazem find, navíc tím získáme možnost sofistikovaněji předávat soubory podle dalších podmínek.
Vyhledávání uživatelů
editovatVyhledávání v instalačních balíčcích
editovatInformativní příkazy
editovatfuser |
Identifikuje běžící procesy které se souborem či soketem právě pracují. Užitečné, když nejde odpojit disk z důvodu, že ho používá nějaký program, a vy nevíte který. | samostatný instalační balík psmisc |
lsof |
Vypisuje seznam otevřených souborů. Podobně jako pomocí fuser lze pomocí této utility zjistit který proces s tímto souborem právě pracuje. | samostatný instalační balík lsof |
fuser vypisuje, které procesy zrovna používají zadaný soubor nebo souborový systém. To se hodí obzvláště tehdy, když vám nejde odpojit disk z důvodu, že ho používá nějaký program, a vy nevíte který. Pomocí identifikačního čísla procesu hravě zjistíte o co se vlastně jedná a v případě že nejde o žádný důležitý proces, můžete jeho běh ukončit příkazem kill
root@stroj:~# fuser -c /dev/sda1 /dev/sda2: 7369 root@stroj:~# ps -ef ¦ grep 7369 root 7369 6690 0 18:15 pts/2 00:00:00 tail -f /var/log/messages
lsof lze využít podobně jako příkaz fuser. Ukáže vám však navíc, s jakým souborem ten proces pracuje. Můžete se tak ještě před jeho ukončením podívat, co je ten soubor vlastně zač.
root@stroj:~# lsof /dev/sda1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME tail 7369 root 1w REG 8,2 853 12 /boot/test
Uživatelé a jejich procesy
editovatwho |
vypisuje přihlášené uživatele | součást instalačního balíku coreutils |
w |
vypisuje přihlášené uživatele a jejich spuštěné aplikace | součást instalačního balíku procps |
finger |
vypisuje informace o uživateli | samostatný instalační soubor finger |
last |
vypisuje informace o uživatelích | |
su |
spuštění subshellu s jiným UID/GID nebo změna na superuživatele | součást instalačního balíku login |
sudo |
spuštění procesů pod jiným UID/GID | samostatný instalační balík sudo |
who je příkaz, který se asi nejčastěji používá pro výpis aktuálně připojených uživatelů. Na rozdíl od následujících, jde v tomto případě o standardní příkaz operačních systémů Unix.
user@stroj:~$ who root tty1 2009-05-06 09:54 user tty7 2009-05-06 08:04 (:0) user@stroj:~$ who -a 2009-05-06 08:04 1502 id=si signál=0 návkód=0 start systému 2009-05-06 08:04 úroveň běhu 2 2009-05-06 08:04 minulá=S 2009-05-06 08:04 3169 id=l2 signál=0 návkód=0 root - tty1 2009-05-06 09:54 06:15 4619 LOGIN tty2 2009-05-06 08:04 4620 id=2 LOGIN tty3 2009-05-06 08:04 4621 id=3 LOGIN tty4 2009-05-06 08:04 4622 id=4 LOGIN tty5 2009-05-06 08:04 4623 id=5 LOGIN tty6 2009-05-06 08:04 4624 id=6 user + tty7 2009-05-06 08:04 starý 4664 (:0) pts/1 2009-05-06 08:29 0 id=/1 signál=0 návkód=0 pts/2 2009-05-06 13:36 0 id=/2 signál=0 návkód=0 user + pts/7 2009-05-06 16:18 . 4370 (stroj.domena.cz)
Z ukázkového výpisu můžete vyčíst, že v okamžiku spuštění příkazu byl do systému kromě uživatele user, který byl přihlášen na grafické konzoli (typicky tty7
), přihlášen také root, a to na první konzoli.
Mezi tím, než byl spuštěn příkaz s parametrem -a se do systému přihlásil pod uživatelem user také ještě někdo jiný ze vzdáleného stroje stroj.domena.cz. Údaj "6:15" u konzole tty1
udává, že už je tomu víc jak šest hodin co na této konzoli root vyvíjel nějakou aktivitu.
w – pro zjištění, kdo je v systému přihlášen, lze místo who použít také tento příkaz. Vypíše nejen ,kdo je kam přihlášen, ale také, co má na konzoli spuštěno.
user@stroj:~$ w 09:56:40 up 1:53, 2 users, load average: 0,38, 0,40, 0,38 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 09:54 11.00s 0.22s 0.07s mc user tty7 :0 08:04 1:52m 7:03 0.07s /bin/bash /usr/bin/keytouchd-launch startxfce4
Také příkaz finger lze při spuštění bez parametrů použít pro detekci přihlášených uživatelů, ale oproti who a w vypíše při volbě -l také obsah níže uvedených souborů (pochopitelně pouze za předpokladu, že mají nějaký obsah):
~/.plan
~/.project
– pozor, z tohoto souboru přečte vždy jen první řádek~/.pgpkey
– soubor s klíčem pro GnuPG v ASCII formátu (finger jej však hledá vždy pouze v tomto souboru)~/.forward
– tento soubor se využívá při doručování elektronické pošty pro automatické doručení na jinou adresu
Kromě nich, také kontroluje čas posledního přístupu uživatele k souboru s jeho lokálními maily (cesta k těmto souborům je obsahem systémové proměnné MAIL
(jaké máte systémové proměnné zjistíte příkazem env).
user@stroj:~$ finger -l Login: user Name: Directory: /home/user Shell: /bin/bash On since Wed May 6 08:04 (CEST) on tty7 from :0 6 hours 58 minutes idle No mail. No Plan.
su – na rozdíl od výše uvedených příkazů slouží příkaz su k „přepnutí“ na jiného uživatele (název příkazu je od tohoto úkonu odvozen – angl. switch user), případně spouštění příkazů pod tímto uživatelem. Není-li žádný uživatel uveden, tak se implicitně předpokládá, že má jít o superuživatele (roota). Tento příkaz však po vás bude vždy chtít zadat heslo tohoto uživatele.
user@stroj:~$ su -c "ls /root" Heslo: celkem 21 drwxr-xr-x 3 root root 128 6. kvě 16.05 . drwxr-xr-x 24 root root 656 4. kvě 21.39 .. -rw------- 1 root root 13486 6. kvě 16.05 .bash_history -rw------- 1 root root 1024 21. bře 22.25 .rnd drwx------ 2 root root 208 25. úno 14.05 .ssh
sudo funguje podobně jako su, Ovšem umožňuje mnohem sofistikovanější použití. Jak napovídá jeho název (switch user and do – volně přeloženo přehoď uživatele a udělej to místo něj), není jeho primárním účelem přepínání mezi uživateli, ale spouštění procesů místo jiného uživatele, ovšem bez nutnosti znát jeho uživatelské heslo.
Co kdo může spouštět se nastavuje v souboru /etc/sudoers
. Oproti su po vás bude chtít sudo vaše uživatelské heslo, nikoliv heslo uživatele pod kterým má být proces spuštěn. sudo má také defaultně nastaven určitý interval, během kterého můžete tento příkaz používat, aniž by bylo nutné znovu heslo zadávat. Některé distribuce (např. Ubuntu) tímto příkazem obcházejí nezbytnost existence superuživatelského účtu.
user@stroj:~$ sudo ls -al /root [sudo] password for user: celkem 21 drwxr-xr-x 3 root root 128 6. kvě 16.05 . drwxr-xr-x 24 root root 656 4. kvě 21.39 .. -rw------- 1 root root 13486 6. kvě 16.05 .bash_history -rw------- 1 root root 1024 21. bře 22.25 .rnd drwx------ 2 root root 208 25. úno 14.05 .ssh
Systémové informace
editovatwhoami |
výpis uživatelského jména asociovaného s aktuálním efektivním ID | součást instalačního balíku coreutils |
groups |
výpis skupin, kterých je zadaný uživatel členem | součást instalačního balíku coreutils |
id |
zobrazení aktuálního reálného a efektivního UID/GID | součást instalačního balíku corelinux |
tty |
tisk jména terminálu | součást instalačního balíku coreutils |
uptime |
součást instalačního balíku procps | |
uname |
tisk systémových informací | součást instalačního balíku coreutils |
dmesg |
součást instalačního balíku util-linux | |
free |
součást instalačního balíku procps | |
vmstat |
součást instalačního balíku procps | |
top |
součást instalačního balíku procps | |
hostname |
samostatný instalační balík hostname |
Správa procesů
editovatnohup |
spuštění příkazu tak, aby mohl pokračovat i po odhlášení uživatele | součást instalačního balíku coreutils |
ps |
součást instalačního balíku procps | |
kill |
vysílá signály k běžícímu procesu | součást instalačního balíku procps |
pgrep |
součást instalačního balíku procps | |
pidof |
součást instalačního balíku sysvinit-utils | |
killall |
součást instalačního balíku psmisc |
kill prostřednictvím různých signálů ukončí nebo změní stav jednoho nebo více procesů. Samotný příkaz kill má jako implicitní signál číslo 15, tedy signál ukončující označený proces (procesy). Můžeme však pomocí volby nastavit jiný signál a daný proces tak například jen zastavit. Při zadávání příkazu kill je podmíněno, aby cílový proces byl spuštěn uživatelem, který se snaží kill použít, výjimkou (ostatně jako vždy) je administrátor. Po provedení příkazu kill zobrazí program kill příslušné hlášení.
Zadáme-li příkaz kill -l, pak nám terminál vypíše všechny signály, které můžeme použít s uvedením jejich čísla a funkce (např: 1) SIGHUP, 3) SIGQUIT, 9) SIGKILL, 15) SIGTERM atd.). Implicitním signálem je SIGTERM. Většinu signálů může cílový proces tzv. zachytit a zpracovat, tedy například signál ignorovat nebo před ukončením uložit rozpracovaná data.
Argumenty, které zde používáme, jsou čísla procesů, které chceme pomocí programu kill ovlivnit. Tyto PID můžeme zjistit například pomocí obslužného programu PS. Tyto argumenty pak v příkazu kill udáváme za volbu. Např: kill -9 1265 vyšle signál SIGKILL, který proces s číslem PID 1265 usmrtí (bezpodmínečně ukončí), takto ukončený proces nemá šanci ani uložit svá data.
Budeme-li chtít rychle ukončit všechny procesy a odhlásit se, pak stačí zadat příkaz kill -9 0
(ukončí rodiče rodičů a tím i všechny potomky).
Příkazy pro práci s jádrem
editovatdepmod |
výpis závislostí modulu | součást instalačního balíku module-init-tools |
insmod |
přidání modulu do běžícího jádra | součást instalačního balíku module-init-tools |
lsmod |
výpis modulů zavedených v jádře | součást instalačního balíku module-init-tools |
modprobe |
přidání modulu do běžícího jádra, včetně na něm závislých modulů | součást instalačního balíku module-init-tools |
modinfo |
informace o modulu | součást instalačního balíku module-init-tools |
rmmod |
odstranění modulu z běžícího jádra | součást instalačního balíku module-init-tools |
Příklady použití těchto příkazů naleznete v kapitole Moduly linuxového jádra
Různé
editovatdircolors |
vypíše příkaz, kterým lze nastavit proměnnou prostředí LS_COLOR | součást instalačního balíku coreutils |
echo |
vypisuje obsah proměnných na standardní výstup | součást instalačního balíku coreutils |
fakeroot |
spouští příkaz takovým způsobem, že u něj simuluje superuživatelská práva | samostatný instalační balík fakeroot |
chroot |
vytvoří pro spuštěný příkaz z aktuálního adresáře kořenový adresář | součást instalačního balíku coreutils |
sync |
vyprázdní buffery I/O cache filesystému | součást instalačního balíku coreutils |