システムにバッテリーがあるかどうかを確認するのは信頼できません。システムに接続されている UPS (電源のためだけでなく、自動シャットダウンとバッテリー監視のために USB 経由でも) がバッテリーとして表示される場合があります。
ただし、信頼できる優れた方法があります:
dmidecode --string chassis-type
ラップトップでは、"Laptop"、"Notebook"、"Portable"、または "Sub Notebook" のいずれかが返されます (製造元が BIOS にコーディングした内容によって異なります)。 Windows 2000 Scripting Guide の「Identifying the Chassis Type of a Computer」に、可能な値の完全なリストがあります。Microsoft TechNet のページであることに注意してください。これは OS 固有のものではありません。
dmidecode は、ハードウェアの製造元、システムのシリアル番号 (場合によっては) などに関する情報も取得できます。
sudo の使用を避けるには、 /sys/class/dmi/id/chassis_type
の内容を読み取ることができます .次の表に準拠しているようです:
- 1 その他
- 2 不明
- 3 デスクトップ
- 4 ロー プロファイル デスクトップ
- 5 ピザボックス
- 6 ミニタワー
- 7 タワー
- 8 ポータブル
- 9 ラップトップ
- ノート10冊
- 11 ハンドヘルド
- 12 ドッキング ステーション
- 13 のオールインワン
- 14 サブ ノートブック
- 15 省スペース
- 16 ランチ ボックス
- 17 メイン システム シャーシ
- 18 拡張シャーシ
- 19 サブシャーシ
- 20 バス拡張シャーシ
- 21 周辺シャーシ
- 22 台のストレージ シャーシ
- 23 ラック マウント シャーシ
- 密閉型PC 24台
Debian ソリューション:
Debian を実行しているマシンがラップトップかどうかを調べるには、次を試してください:
[ -d /sys/module/battery ] && echo "Yes it's a laptop"
このアプローチには root
は必要ありません
ただし、他のディストリビューションでは、バッテリーの有無に関係なく、少なくともスケルトン形式でこのディレクトリが存在するようです。コメント (以下) から、これらのディストリビューションには、CentOS、Ubuntu、Linux Mint の Ubuntu 派生ディストリビューションが含まれます。
より一般的な解決策
私の Debian システムでは動作しませんが、Alex が提案したソリューションは Ubuntu と CentOS で動作すると報告されています。したがって、一般性を高めるために、可能な組み合わせソリューションを提案します:
[ -f /sys/module/battery/initstate ] || [ -d /proc/acpi/battery/BAT0 ] && echo "Yes it's a laptop"
このアプローチには root
は必要ありません
詳細h3>
実際のバッテリーを搭載した Debian システムでは、/sys/module/battery
ディレクトリには多くのファイルが含まれています。そのようなファイルの 1 つが /sys/module/battery/initstate
です。 テキスト live
を含む .ただし、Ubuntu では、これらのファイルは実際のラップトップにも存在しません。したがって、ファイル /sys/module/battery/initstate
が存在するようです。 Debian を実行しているラップトップのテストに使用できます。
対照的に、私がテストした Debian システムでは、/proc/acpi/battery
ディレクトリが存在しませんでした。