Uroš Popović v krátkém článku vysvětluje, co jsou emulátor terminálu, TTY a shell a jaké jsou mezi nimi rozdíly. Jde o první díl seriálu na jeho novém webu Linux Field Guide věnovaném nízkoúrovňové práci s linuxovými systémy.
Byl vydán Debian 13.5, tj. pátá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.14, tj. čtrnáctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.
Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.
Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.
split pro rozdělování souborů na části a dd pro nízkoúrovňové kopírování souborů.split je program sloužící k rozdělení většího souboru na několik menších. Název split znamená anglicky „rozdělit“. Program se poprvé objevil v systému AT&T UNIX v3.
Základní použití vypadá následovně:
split velky_textovy_soubor.txt
Tento příkaz rozdělí daný soubor po 1000 řádcích do několika menších. Počet řádků lze ovlivnit přepínačem -l, kterému se předá požadovaný počet řádků. Základ názvu výstupních souborů, jelikož jsme žádný nezadali jako druhý argument, se použije výchozí, a tp je „x“. Použije se i výchozí délka přípony, což obnáší dva znaky („aa“, „ab“, atd.) a lze ovlivnit přepínačem -a následovaným celočíselnou hodnotou. Výstupní soubory se tedy budou jmenovat „xaa“, „xab“, „xac“ a tak dále.
split -a 3 -l 2000 velky_textovy_soubor.txt casti_velkeho_textoveho_souboru.
Tento příkaz rozdělí daný soubor po 2000 řádcích a výstupní soubory budou mít názvy „casti_velkeho_textoveho_souboru.aaa“, „casti_velkeho_textoveho_souboru.aab“, atd.
Rozdělování na základě daného počtu řádků se může hodit u textových souborů, ale u ostatních typů je vhodnější zadat požadovanou velikost jednotlivých částí souboru. To se dělá pomocí přepínače -b, kterému můžete zadat celočíselnou hodnotu (počet bytů), případně za ni doplnit znak „k“, když chcete zadat počet kilobytů, nebo „m“ pro práci s megabyty.
# rozdělí soubor po 100 MB (2^20 B) na „iso.a“, „iso.b“, „iso.c“, atd. split -a 1 -b 100m velky_binarni_soubor.iso iso.
Tolik tedy ke standardní verzi. GNU verze, jak bývá zvykem, přináší pár rozšíření. Přepínač -b rozeznává více přípon. K, M, G, T, P, E, Z, Y jsou mocniny dvojky (běžně používané v informace), přičemž KB, MB, GB, TB, PB, EB, ZB a YB jsou mocniny deseti podle SI.
# rozdělí „soubor“ po 2 GB (2*2^30 B) na „xaa“, „xab“, atd. split -b 2G soubor
Přepínač -C (--line-bytes) se hodí pro použití s textovými soubory. Zadáte mu počet bytů (podporuje i přípony jako -b) a split potom rozdělí vstupní soubor tak, že se do každého výstupního souboru zapíše tolik řádků, kolik je možné, aniž by byla daná velikost překročena. Obsahuje-li soubor řádek delší, než je zadaná velikost, daný řádek bude rozdělen do více souborů.
# rozdělí „soubor.txt“ tak, aby v každé části byl co největší počet # kompletních řádků, který se vejde do 2 MB split -C 2M soubor.txt
A nakonec můj oblíbený přepínač -d (--numeric-suffixes), který zajistí, aby se v příponě místo znaků používaly číslice.
# rozdělí „soubor.mp3“ po 1 GB na „soubor.mp3.001“, „soubor.mp3.002“, atd. split -a 3 -d -b 1G soubor.mp3 soubor.mp3.
Rozdělené soubory lze pak velice snadno spojit pomocí příkazu cat.
cat „soubor.mp3.001“ „soubor.mp3.002“ „soubor.mp3.003“ > „soubor.mp3“ # zkrácená verze téhož cat soubor.mp3.* > soubor.mp3
dd je program, jehož hlavním účelem je nízkoúrovňové kopírování a konverze surových dat. Původ tohoto nástroje je zvláštní. Název dd je „zkratkou“ convert and copy, přičemž někde se lze dočíst, že to není „cc“ (jak by se dalo očekávat) právě proto, že takto se jmenuje kompilátor. Říká se, že netradiční syntaxe tohoto programu (ve stylu parametr=hodnota) je parodie na IBM JCL.
Lidé si z dd občas utahují a říkají, že je zkratkou „data destroyer“ (ničitel dat) nebo „delete data“ (smazat data), jelikož stačí omylem prohodit parametry a můžete tak snadno přijít o data. Vlastně klidně o celý oddíl. Opatrnost se tedy vyplatí.
Hlavní parametry jsou if a of, přičemž pomocí if se zadává vstupní soubor (input file) a pomocí of tedy výstupní soubor (output file). Další důležité parametry jsou bs (určuje velikost vstupních i výstupních bloků, výchozí je 512 bytů) a conv (přes ten se zadává, jak chceme soubor zkonvertovat). Ukážeme si, jak pomocí dd zkopírovat obraz ISO z CD-ROM:
dd if=/dev/cdrom of=CD.iso bs=2048 conv=sync,notrunc
Tento příkaz čte ze zařízení /dev/cdrom po 2 kB a zapisuje přečtená data do souboru CD.iso v aktuálním adresáři. Argument sync parametru conv zajistí doplnění každého vstupního bloku na velikost vstupního bufferu (zadaného v tomto případě přes parametr bs). Argument notrunc téhož parametru zabraňuje zkrácení případného existujícího výstupního souboru CD.iso (tj. pokud CD.iso již existuje, bude se obsah nahrazovat postupně od začátku přepisováním souboru).
Parametr count umožňuje zadat počet vstupních bloků, které se mají zkopírovat. Implicitně se kopírují všechny.
# vytvoří 10 MB velký soubor plný nul dd if=/dev/zero of=nuly.txt bs=1024k count=10
Dále si představíme parametry skip a seek. Parametr skip přeskočí daný počet vstupních bloků, než začne kopírovat vstupní soubor. Parametr seek přeskočí daný počet výstupních bloků ve výstupním souboru a teprve potom začne zapisovat. Umožňuje tak vytvářet tzv. řídké soubory (sparse files):
# vytvoří 1 GB soubor, který ve skutečnosti nezabírá žádné místo, # protože je prázdný (řídký) dd if=/dev/zero of=sparse_file bs=1 count=0 seek=1G # zkopíruje druhých 512 bytů (tj. byty 513 až 1024) dd if=/dev/sda of=file bs=512 skip=1 count=1
Velikost vstupních a výstupních bloků lze nastavit najednou pomocí bs, jak jsme si již řekli, ale v případě potřeby lze nastavit obě hodnoty zvlášť pomocí ibs (vstup) a obs (výstup).
Parametr conv podporuje více možností převodu dat, než jsme si zatím ukázali. Například argument ucase převede malá písmena na velká (a lcase naopak velká na malá), swap prohodí každý pár vstupních bytů. Argument noerror zajistí pokračování i v případě chyb, přičemž v kombinaci se sync se chybné byty nahradí nulovými (jinak jsou vynechány). Argument ascii převede (standardní) EBCDIC na ASCII, přičemž ebcdic udělá opak. Argument ibm slouží k převodu ASCII do IBM EBCDIC.
# převede ve vstupním souboru malá písmena na velká dd if=soubor1 of=soubor2 conv=ucase
GNU dd podporuje výpis statistik přenosu za běhu programu. Lze toho docílit posláním signálu SIGUSR1. Když počítáte dopředu s tím, že byste toho chtěli využít, je dobré pustit dd na pozadí a rovnou si uložit PID procesu do proměnné.
# zkopíruje oddíl (sda1) na jiný (sdb1) dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=notrunc,noerror & # uloží PID naposledy spuštěného procesu na pozadí do proměnné „PID“ PID=$! # každých 10 sekund vypíše statistiku while kill -USR1 $PID 2> /dev/null; do sleep 10 done
Existují zvláštní verze dd, které jsou specializované na
zachraňování dat z poškozených disků, atp. Jde například o GNU ddrescue nebo
dd_rescue. Port na Windows je k dispozici též.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
watch killall -USR1 dd
výhoda je, že se to snadněji pamatuje a je možné to pustit jednou a bude to fungovat pro všechny dd, dokud se to nevypne.
Pro pokročilejší bych doplnil, že bez zadání if a/nebo of se použije standardní vstup/výstup. To sice degraduje dd na úroveň cat, ale třeba při práci s blokovými zařízeními je cat trochu problematický
Například:
ssh root@nekde 'dd if=/dev/sda bs=1M' | dd of=/dev/sda bs=1M
Každopádně před každým použitím dd doporučuju pořádně zkontrolovat argumenty, přesně podle starého japonského přísloví z dynastie Ming "dvakrát měř, jednou dd".
while true ; do sleep 2 ; prikaz ; done ;, ale jinak je to opravdu užitečný prográmek. Mé oblíbené je watch cat /proc/mdstat
You can watch for your administrator to install the latest kernel with
watch uname -r
Vynulovat nepoužité části NTFS disku se jinak dá i z již nainstalovaných Windows, je na to program 'sdelete.exe' (dříve sysinternals, dnes Microsoft).Nebo opět to dd -
dd if=/dev/zero of=/mnt/ntfs/bigfile
.
Opak je ale pravdou, je to můj velmi oblíbený příkaz. Jen jsem chtěl upozornit, že na zálohu NTFS jsou lepší nástroje.
Obsahuje-li soubor řádek delší, než je zadaná velikost, daný řádek bude rozdělen do více souborů.a tohle:
# rozdělí „soubor.txt“ tak, aby v každé části byl co největší početsi protireci.
# kompletních řádků, který se vejde do 2 MB
dd if=input bs=X |dd of=output bs=Xbude vyrazne rychlejsi oproti jedno-procesovemu
dd if=input of=output bs=X