Pohled na to, zda má systém baterii nebo ne, není spolehlivý – UPS připojená k systému (nejen pro napájení, ale také přes USB pro automatické vypínání a monitorování baterie) se může zobrazit jako baterie.
Existuje však pěkný spolehlivý způsob:
dmidecode --string chassis-type
Na notebooku to vrátí jednu z možností „Laptop“, „Notebook“, „Portable“ nebo „Sub Notebook“ (podle toho, co výrobce zakódoval do BIOSu). Úplný seznam možných hodnot je uveden v části "Identification the Chassis Type of a Computer" v příručce Windows 2000 Scripting Guide - nebojte se, že se jedná o stránku Microsoft TechNet, toto není specifické pro OS.
dmidecode může také získat informace o výrobci hardwaru, sériovém čísle systému (někdy) atd.
Chcete-li se vyhnout použití sudo, můžete si přečíst obsah /sys/class/dmi/id/chassis_type
. Zdá se, že odpovídá následující tabulce:
- 1 další
- 2 Neznámé
- 3 Desktop
- 4 Nízkoprofilová plocha
- 5 krabic od pizzy
- 6 Mini Tower
- 7 věž
- 8 přenosných
- 9 Notebook
- 10 Notebook
- 11 ruční
- 12 Dokovací stanice
- 13 vše v jednom
- 14 Sub Notebook
- 15 Úspora místa
- 16 obědový box
- 17 šasi hlavního systému
- 18 Rozšiřovací podvozek
- 19 SubChassis
- 20 Bus Expansion Chassis
- 21 Periferní podvozek
- 22 úložný podvozek
- 23 Rack Mount Chassis
- 24 PC s uzavřeným pouzdrem
Řešení Debianu:
Chcete-li zjistit, zda je počítač s Debianem notebook, zkuste:
[ -d /sys/module/battery ] && echo "Yes it's a laptop"
Tento přístup nevyžaduje root
privilegia.
Na jiných distribucích se však zdá, že tento adresář existuje, alespoň ve formě kostry, bez ohledu na to, zda je nebo není baterie. Z komentářů (níže) tyto distribuce zahrnují CentOS, Ubuntu a distribuci Linux Mint odvozenou z Ubuntu.
Obecnější řešení
Ačkoli to nefunguje na mých systémech Debian, řešení navržené Alexem údajně funguje na Ubuntu a CentOS. Pro větší obecnost tedy navrhuje možné kombinované řešení:
[ -f /sys/module/battery/initstate ] || [ -d /proc/acpi/battery/BAT0 ] && echo "Yes it's a laptop"
Tento přístup nevyžaduje root
privilegia.
Další podrobnosti
Na systému Debian se skutečnou baterií /sys/module/battery
adresář obsahuje mnoho souborů. Jedním takovým souborem je /sys/module/battery/initstate
který obsahuje text live
. Na Ubuntu však tyto soubory neexistují ani na skutečných noteboocích. Zdá se tedy, že přítomnost souboru /sys/module/battery/initstate
lze použít k testování notebooku s Debianem.
Na systémech Debian, které jsem testoval, je naopak /proc/acpi/battery
adresář neexistoval.