Před několika měsíci jsem požádal komunitu přispěvatelů Enable Sysadmin, aby mi pomohli vytvořit seznam jejich nejdůležitějších příkazů. Po zpracování výsledků se 17 z příkazů ukázalo jako zásadních nebo alespoň velmi přínosných pro práci správce systému Linux. Takže bez dalšího zdržování se vrhněme na tyto.
[ Chcete se dozvědět více o síťových příkazech? Přečtěte si první část našeho seznamu hromadných příkazů ]
najít —Tento příkaz je součástí findutils
a umožňuje vlastní vyhledávací příkazy. Pokud jste například chtěli najít adresáře, které odpovídají konkrétnímu názvu, můžete použít něco takového:
find path/ -type d -iname '*dir_name*'
Můžete najít další informace o příkazu zde.
ls+xargs —Toto párování pro mě bylo nové; bylo to však opravdu zajímavé se učit a má některé aplikace, které mohou potenciálně změnit hru. xargs
umožňuje spouštět další příkazy proti výstupu daného příkazu. Super základní příklad toho lze vidět při spárování s ls
příkaz. Například, pokud jste chtěli cat
všechny soubory uvedené v ls
, můžete použít něco takového:
$ ls
1.file 2.file 3.file
$ ls | xargs cat
you are reading file 1
you are reading file 2
you are reading file 3
Podívejte se na podrobný pohled na xargs z HowtoGeek
awk/sed/(e)grep —Toto trio bylo jmenováno vícekrát než kterýkoli jiný příkaz(y) naší komunity. Bylo úžasné vidět, jak důležité jsou tyto příkazy pro komunitu a pro systémové správce jako celek. Zaměřme se na grep
první.
grep -Grep je úžasný, žádná lež. Pokud ještě neznáte grep
(a buďme upřímní, je to přinejmenším možné, pokud jste v linuxovém příkazovém řádku noví), seznamte se s ním. grep
je nástroj, který vám umožní filtrovat standardní výstup téměř čehokoli na příkazovém řádku. Můžete grep
pro slova, která chcete najít, nebo je invertujte, abyste zobrazili vše, co NESHODUJE s vaším klíčovým slovem. Dokonce si něco málo povíme o velmi podobném nástroji, který rozšiřuje grep
trochu. Zde je několik příkladů.
Chcete-li zobrazit všechny řádky v daném souboru, které obsahují například slovo „chyba“, udělali byste něco takového:
$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.
$ grep error file.txt
This line contains an error.
$
To je to, co byste nazvali inkluzivní grep
. Můžete to také zvrátit pomocí příznaku vyloučení. Řekněme, že chcete vidět všechny možnosti konfigurace v sshd config
které nejsou zakomentovány, můžete udělat toto:
# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
… snip ...
Subsystem sftp /usr/libexec/openssh/sftp-server
#
Stojí za zmínku, že grep
rozlišuje velká a malá písmena, jako mnoho věcí v Bash. Takže pátrání po „chybě“ nenajde „Chyba“ nebo „CHYBA“. Můžete říct grep
pro filtrování bez ohledu na velikost písmen pomocí -i
vlajka.
$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
To se bude shodovat u chyb, ERROR, erRoR nebo čehokoli, pokud jsou písmena stejná.
Nyní jsem řekl, že můžete použít grep
filtrovat výstup jakéhokoli příkazu správně? Uděláte to s přesměrováním výstupu pomocí roury. To je opravdu užitečné pro věci, jako je filtrování protokolů, a to i v reálném čase s koncem -f
.
# tail -f /var/log/messages | grep -i error
Existuje mnohem více možností pro grep
, včetně filtrování na základě souboru klíčových slov, regulárních výrazů, dokonce můžete výstup obarvit. Pokud se chcete dozvědět více, doporučuji vám seznámit se s manuálovou stránkou.
egrep —A co když chcete filtrovat více než jedno slovo? Vždy jsem používal egrep
za to.
Řekněme, že chcete grep
v případě chyby nebo varování můžete udělat něco takového:
$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.
egrep
jsem si jistý, že bude podporovat další vzory, ale právě ten je ten, pro který jsem ho vždy používal, a zjistil jsem, že je velmi užitečný.
awk —awk
implementuje programovací jazyk AWK pro zpracování textu a je obzvláště dobrý při zpracování dat uspořádaných do sloupců. Tento příkaz je dostupný ve většině distribucí Linuxu, ne-li ve všech, a také ve všech ostatních operačních systémech UNIX.
Systémoví správci běžně používají awk
pro extrahování dat ze souborů nebo z výstupu jiných příkazů v příkazovém řádku nebo skriptech Shell. Vyvolejte awk
spuštěním příkazu poskytujícího akci mezi '{}'
. Na sloupce můžete odkazovat jako na proměnné, například $1
pro první sloupec $2
, za druhé a tak dále. Ve výchozím nastavení awk
používá jako oddělovač sloupců mezery, ale můžete použít jakýkoli znak, když jej zadáte příznakem -F
.
Chcete-li například vytisknout vlastníka a skupinu, sloupce 3 a 4 ve výstupu ls -l
, přesměrujte jeho výstup do awk
takhle:
$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...
Můžete také filtrovat řádky ze vstupu zadáním volitelného regulárního výrazu před akcí. Chcete-li například vytisknout všechny názvy hostitelů (sloupec 2) řádků začínajících číslem v /etc/hosts
soubory, použijte awk
takhle:
$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...
awk
je všestranný příkaz, který podporuje celý programovací jazyk a umožňuje vám dělat mnoho věcí, jako je provádění výpočtů, podmíněnosti, transformace dat a další. Je to skvělá volba, která vám pomůže automatizovat vaše systémy a často je součástí skriptů shellu.
Další informace najdete v článku Příručka pro začátečníky koukání a příkaz man
stránky.
sed —Příkaz sed
—zkratka pro editor streamů — umožňuje filtrovat a upravovat proudy textu skriptovaným způsobem. Systémoví správci často používají sed
ve skriptech Bash k transformaci textu z jiných příkazů nebo přímo ze souborů. Ve své nejzákladnější podobě sed
vyhledává a nahrazuje text. Použijte jej například k nahrazení řetězce „stream“ řetězcem „text“ pocházejícím z potrubí, jako je tento:
$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text
Text v souboru můžete také nahradit zadáním názvu souboru jako posledního parametru, například takto:
$ sed 's/pattern/replacement/' filename
Z bezpečnostních důvodů sed
odešle výsledky do STDOUT bez úpravy souboru. Chcete-li uložit výsledky, můžete výstup přesměrovat do nového souboru. Můžete také změnit původní soubor na místě zadáním -i
vlajka.
Ve výchozím nastavení sed
změní pouze první výskyt vzoru v každém řádku. Chcete-li toto chování změnit a umožnit nahrazení všech výskytů vzoru, zadejte g
možnost na konci sed
příkazový výraz, jako je tento:
$ sed 's/pattern/replacement/g' filename
Kromě základního textového vyhledávání sed
podporuje párování regulárních výrazů. Například použijte regulární výraz „[Ww]ord“ k nahrazení slov „Word“ i „slovo“ v každém řádku:
$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD
Tento příkaz nabízí mnoho dalších možností, ale i při tomto základním použití můžete ušetřit spoustu času. Další informace o dalších možnostech získáte od man
stránky pro sed
.
sledovat —Tento příkaz umožňuje spouštět příkaz/program opakovaně v daném intervalu. Ve výchozím nastavení je interval každé dvě sekundy. Mnoho správců systému používá tento příkaz ke sledování různých systémových stavů nebo úkolů až do dokončení.
Pokud byste například chtěli sledovat využití paměti, můžete použít následující: watch -d free -m
(-d
volba zvýrazní hodnoty, které se liší od posledního spuštění).
vlnit —Tento příkaz umožňuje přenášet data na/ze serverů s mnohem více možnostmi než pouze HTTP/HTTPS. Funguje bez interakce uživatele a je velmi často vidět v situacích, kdy potřebujete provést volání REST API (GET, POST, PUT).
curl
podporuje mnoho možností připojení k serverům, jako je SSL, pomocí cookies, obnovení přenosu souborů atd. Je to skoro, jako byste měli webový prohlížeč, který můžete spustit z příkazového řádku.
Níže uvedený příklad ukazuje curl
pro jednoduché stažení souboru, ale s omezením šířky pásma:
curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz
Jak je uvedeno v příručce, počet možností dostupných pro použití s curl
je mnoho. Některé z těch, které často používám, jsou:
-s:
spustit v tichém režimu (bez ukazatele průběhu)-k:
povolit nezabezpečené připojení (pouze při připojení k internímu známému serveru, pro který se používá certifikát s vlastním podpisem)
curl -X POST --header "Content-Type: application/json" \
--data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
https://myserver.example.com/posts
Ve výše uvedeném příkladu dělám POST a předávám záhlaví a tělo .
e-mail —mail
command je super úhledný nástroj, který uživateli umožňuje odesílat e-maily přímo z příkazového řádku, aniž by musel otevírat prohlížeč nebo vyhrazeného klienta. Na vašem počítači musíte mít lokálně spuštěný SMTP server, takže si toho musíte být vědomi.
Nainstalujte balíček:
$ apt-get install mailutils
Chcete-li odeslat základní e-mail, můžete použít následující:
$ mail -s "Subject Line" [email protected]
Když stisknete Enter , budete vyzváni pomocí Kopie pole. Můžete přidat další příjemce nebo stačí stisknout Enter přeskočit. Poté napíšete svou zprávu. Po dokončení použijte Ctrl+D k odeslání zprávy k doručení. Po dokončení by to mělo vypadat takto:
$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world"
<Ctrl + D>
Další informace o tomto příkazu najdete v tomto skvělém článku.
tmux —tmux
příkaz, což je terminálový multiplexer, umožňuje více oken uvnitř jednoho terminálového okna. Mezi okny můžete přeskakovat a dokonce je rozdělit do jednotlivých podoken, z nichž každé má své vlastní CLI. Kolem tmux
jsme zveřejnili skvělý obsah a jak to používat, tak vám nechám odkaz na ten obsah. Další informace naleznete v tipech pro používání tmux.
sudo —Příkaz sudo je vaše cesta k vyšším oprávněním. Všichni správci systému musí vědět, jak tento příkaz používat, jak se liší od su
(které mnozí používají místo sudo
…špatný nápad) a jak zajistit přístup pomocí nezbytných účtů. Napsal jsem úvodní článek do sudo
hodně zpět, kdy to může být užitečné.
ssh —ssh
(Secure Shell) příkaz umožňuje používat vzdálené pracovní protokoly pro přístup a manipulaci se servery přes síťové připojení. Pokud jste někdy pracovali na podpoře nebo vám v této věci pomohla podpora, technik podpory často používá ssh
pro přístup k vašemu počítači nebo serveru.
Použití příkazů je docela jednoduché:
$ ssh username@hostname
Budete vyzváni k zadání hesla, a pokud poskytnete správné přihlašovací údaje, budete na cestě do požadovaného systému.
scp —Příkaz zabezpečeného kopírování (scp
) umožňuje uživateli kopírovat soubory do/ze vzdáleného systému. Budete potřebovat ssh
povolena na obou koncích transakce a správná syntaxe příkazu. To vše a měli byste být připraveni jít. Syntaxe příkazu by měla vypadat nějak takto:
Chcete-li zkopírovat soubor ZE vzdáleného systému do aktuálního pracovního adresáře:
scp user@ip_of_remote :/file/path/of/file.txt .
pkill —Tento příkazový nástroj nám umožňuje signalizovat procesy spuštěných programů. Proces můžete hledat podle názvu (úplného nebo částečného), uživatele atd. Existuje spousta možností pro použití této utility, ale ve výchozím nastavení příkaz posílá signál 15 (TERM) do všech PIDS vyhovujících vašim kritériím. Například:
$ pkill chrome
Tím by měly být ukončeny všechny instance prohlížeče Chrome spuštěné v počítači.
lsns —Tento příkaz, seznam jmenných prostorů (lsns
), dělá přesně to, co říká – uvádí jmenné prostory. Bláznivé, že? Každopádně je zde spousta možností, které můžete přidat: -J
(formát json), -l
(formát seznamu), -n
(bez záhlaví) atd. Tento příkaz je součástí util-linux
balení a je široce dostupné. Další informace o lsns
nebo jmenné prostory obecně, přečtěte si tento článek od přispěvatele Steva Ovense 7 nejpoužívanějších jmenných prostorů Linuxu.
zrušit sdílení —Tento je také soustředěn kolem jmenných prostorů. Příkaz unshare spustí program v nově vytvořeném jmenném prostoru (prostorech). Ve výchozím nastavení bude nový jmenný prostor trvat pouze tak dlouho, dokud v něm běží programy. Další informace o tomto příkazu naleznete v man
na vašem oblíbeném počítači se systémem Linux.
[ Chcete si vyzkoušet své schopnosti správce systému? Proveďte hodnocení dovedností ještě dnes. ]
Pokud dokážete začlenit tyto nástroje do svého pracovního postupu tam, kde dávají smysl, budete pro to lepším správcem systému. Pokud se některé z vašich oblíbených příkazů na seznam nedostaly, rádi bychom o nich slyšeli. Neváhejte a odešlete článek o svém oblíbeném příkazu, který jsme neuvedli, na adresu [email protected].