Portál AbcLinuxu, 10. června 2025 11:56


Dotaz: Vše v Linuxu je soubor.

28.7.2018 20:14 Petr
Vše v Linuxu je soubor.
Přečteno: 852×
Odpovědět | Admin
Ahoj, můžete mi prosím někdo vysvětlit, co přesně znamená že vše v Linuxu je soubor? Děkuju

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.7.2018 20:23 SpaceExplo | skóre: 15
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Odpovědět | | Sbalit | Link | Blokovat | Admin
To znamena, ze vsechna zarizeni, soubory i informace je mozne najit pod "/"

PS: ne vsechno pod "/" je ve skutecnosti fyzicky soubor na disku, napriklad /proc jsou data z kernelu o processech atd
28.7.2018 22:21 debian
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Okrem jednej veci. Siet. ... Vsetko ostatne sa da pristupovat ako subor (na rozhrani jadra ... ).
28.7.2018 22:23 debian
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Cez jednotne rozhranie, co je prirozedze a logicke pre subor.
28.7.2018 23:04 Ja
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Ale aby nám to nebylo líto, existuje souboru podobné rozhraní i pro síť http://xmodulo.com/tcp-udp-socket-bash-shell.html (tedy pokud nevadí, že to funguje jen v bashi...)
29.7.2018 08:00 debian
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Ja viem. Preto som dopisal ze na rozhrani jadra. ... Ved napr. vdaka FUSE moze byt vlastne teoreticky hocico sa tvarit a pristupovat k tomu ako cez subor.
Řešení 1× (cronin)
k3dAR avatar 29.7.2018 00:43 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Odpovědět | | Sbalit | Link | Blokovat | Admin
ze se da ke (skoro) vsemu pristupovat jako k souboru...

treba zarizeni disk je dostupne (napr.) jako "soubor" /dev/sda, jeho 1 oddil jako /dev/sda1...
nebo treba cd/dvd mechanika ma zarizeni "soubor" /dev/sr0 a pokud bys chtel v terminalu "surove" udelat iso tak ten soubor jen zkopirujes:
cp /dev/sr0 /adresar/soubor.iso
dale v ("virtualnim") adresari /proc jsou (nejen) procesy jako soubory...
zobrazeni parametru jada pouzite pri startu:
cat /proc/cmdline
zobrazeni informaci o CPU:
cat /proc/cpuinfo
zobraznei informaci o RAM:
cat /proc/meminfo

v /sys jsou systemove informace, (nektere) nastaveni systemu dostupne jako soubory...
napr. nastaveni podsvetleni LCD u NB:
echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness
zjisteni ("cisla") maximalniho podsviceni:
cat /sys/class/backlight/acpi_video0/max_brightness
aktualniho podsviceni:
cat /sys/class/backlight/acpi_video0/actual_brightness
lze nastavovat nektere parametry treba i graficke karty, u AMD muzes pre/pod-taktovat gpu, ram...
muzes praci se soubory v /sys treba i ovladat LED, podsviceni klavesnice, atd, atd... napsal sem jen par veci, je toho dostupneho mnohem vice...
porad nemam telo, ale uz mam hlavu... nobody
Petr Fiedler avatar 29.7.2018 01:46 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
A šlo by u notebooku nastavit jas na více, než to umožňuje defaultní nastavení z fabriky? Např. já mám 1-10, tak že bych to nastavil na "12"?
29.7.2018 02:52 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Pokud nemá bios nějakou rezervu, tak spíš ne. Většinou jde ten PWM čip od 0 do konstantní jedničky/
k3dAR avatar 29.7.2018 05:57 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
nemuzes dat vice nez je v max_brightnest, spis bys mohl docilit jemnejsi zmeny/nizsiho min podsvetleni, pokud krome acpi tam(v /sys/class/backlight/) mas i dalsi ovladac, muze mit max jine cislo (ale na 99.99% by realne max podsvetleni odpovidalo stejne tomu max v acpi), zkus nastavit klavesou max jas a pak:
cat /sys/class/backlight/*/*_brightnest
zobrazi ti to hodnoty vsech pripadnejch ovladac pro actual a max, pokud by to nebylo stejne (mysleno vzdy ten par) tak zkus nastavit rucne...
jinak pro asi lepsi pochopeni, nainstaluj si mc (midnight commander, spravce souboru v terminalu)), vlez do adresare /sys/class/backlight a uvidis co tam mas, pres F3 si muzes soubory prohlizet...

ja napr. na T420 mam i intel_backlight ovladac, to ma max hodnotu ~4000 a pouzivam to pro to jemne nastaveni pres jinou hotkey, protoze bezne Fn+PodsvetleniDolu to(intel udaj) stahne na 70 (acpi udaj na 0), ale ja si to stahnu na 10, stejne tam tim muzu jemneji/plynuleji menit podsvetleni, protoze Fn meni po 70, ja po 10
porad nemam telo, ale uz mam hlavu... nobody
29.7.2018 02:50 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Šalamounská odpověď je, že v linuxu existuje /dev/mem a /dev/port, takže opravdu všechno v linuxu je soubor :-D.

Ale jinak to je dost přesný, skoro všechno se dá ovládat přes otevřený file deskriptor. Otázka je zda jde všechno číst třeba v shellu, to ne, věci jako memmapped a ioctl se nedají v shellu příliš použít.

Síťování není explicitně soubor, ale se sockety pracuje s file deskriptory a normálně s read/write.
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
29.7.2018 08:06 debian
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Ale socket nevytvoris cez (f)write, musis ist cez socket().

A /dev/port nema nick so socketmi.

Mozno keby vznikal unix neskor, bol by aj socket subor. Len asi vtedy to bolo viac narocnejsie, zlozitejsie. A cez socket mozno viac jednoduchsie (implementacne).
29.7.2018 10:29 Sten
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Plan 9 má úplně všechno jako soubor včetně sítě. Náročnější to není, sítě ale pocházejí z BSD, kde to vzniklo jako akademický pokus a nějak to nikdo netlačil, aby to bylo mapované jako soubory.
29.7.2018 14:40 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Ale socket nevytvoris cez (f)write, musis ist cez socket().

Obyčejný soubor syscallem write() nevytvořím také. A jestli myslíte open() (nebo creat()), tak tím stejně nevytvořím třeba rouru, znakové nebo blokové zařízení. A jestli narážíte na to, že nemají odpovídající položku ve filesystému, tak zkuste říct, jestli je opravdu tak zásadní rozdíl mezi deskriptory, které vytvoří pipe(), a deskriptory, které vytvoří socketpair().

Není nakonec to "všechno je soubor kromě sítě" stejně prázdná fráze jako původní "všechno je soubor"?

Řešení 1× (Fluttershy, yay!)
29.7.2018 13:49 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Vše v Linuxu je soubor.
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je populární, leč nepřesný a zjednodušující výrok. Zasvěcení mu rozumí, ostatní zmate.

Celé to souvisí s UNIXovou filozofií, která kromě jiného říká:
Pravidlo modularity: Pište jednoduché části, které budou spojeny bezchybným rozhraním.
O souborech můžeš přemýšlet jako o jednoduchém rozhraní. Pokud chceš zpřístupnit nějaké informace třeba z jádra, můžeš to udělat různými způsoby. Jednou z možností by bylo vytvořit ABI (jako třeba Windows API). Tam může být výhodou snadné použití, ale na druhou stranu jsi odkázaný na jazyk, pro který existují bindingy nebo wrapper.

Druhou možností je ty data prostě zpřístupnit jako soubor ve speciálním souborovém systému. Nemusí se tedy nutně jednat o soubory uložené na blokovém zařízení, ale spíš o určitý pohled (view) na data v paměti, nebo rozhraní, které je realizované jako souborový systém. Příkladem budiž procfs a devfs.

Dále možná víš, že v UNIX-like systémech existuje adresář /, neboli kořenový adresář (pozor: kořenovým adresářem může být v jiných kontextech myšleno něco jiného). Do jednotlivých adresářů a podadresářů je možné připojovat (tzv. mountovat) jiné souborové systémy. V praxi si to představ jako jeden obrovský strom, jehož kořenem je ten adresář / (a jehož obsah odpovídá tomu, co je uloženo v tvém kořenovém filesystému). Jednotlivé podadresáře se ale můžou chovat jako přístupové body do jiných souborových systémů (ať už fyzických, nebo virtuálních). Kernel pak samozřejmě ví, na kterém fyzickém zařízení – pokud nějakém – ta data skutečně leží. Pro fyzická bloková zařízení lze k zobrazení mapování použít třeba program lsblk.

Tento návrh má nějaké velmi pěkné vlastnosti. Tím, že u souborů už jsou vyřešena přístupová práva, získáš bez dalšího úsílí nezbytný bezpečnostní mechanismus včetně možnosti konfigurace (přinejmenším někde; nejsem si úplně jistý, že třeba /dev/mem lze zpřístupnit běžnému uživateli). Současně získáš rozhraní, které je strukturované a je možné se v něm orientovat a pracovat s ním pomocí běžných nástrojů. Nevýhodou naopak je nutnost někdy výstup dodatečně parsovat (např. /proc/cpuinfo) a dále si nejsem jistý, jestli někde nemůže být problém s konkurenčním přístupem.

Co se týká toho, co vše je zpřístupněno jako soubor, se tu už rozepsali jiní.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.