Pse*_*che 18 linux shell-script
是否有任何可靠的方法可以从 bash 脚本中(以编程方式)确定它是在笔记本电脑还是台式计算机上执行的?
我显然可以提示用户询问他们,但这很笨拙。
Gra*_*ant 29
查看系统是否有电池是不可靠的 - 连接到系统的 UPS(不仅用于电源,而且通过 USB 以及用于自动关闭和电池监控)可能会显示为电池。
然而,有一个很好的可靠方法:
dmidecode --string chassis-type
Run Code Online (Sandbox Code Playgroud)
在笔记本电脑上,这将返回“笔记本电脑”、“笔记本电脑”、“便携式”或“子笔记本电脑”之一(取决于制造商在 BIOS 中编码的内容)。Windows 2000 脚本指南中的“识别计算机的机箱类型”中有可能值的完整列表- 不要担心它是 Microsoft TechNet 页面,这不是特定于操作系统的。
dmidecode 还可以获取有关硬件制造商、系统序列号(有时)等的信息。
dem*_*ure 11
为避免使用 sudo,您可以阅读/sys/class/dmi/id/chassis_type
. 它似乎符合下表:
要确定运行 Debian 的机器是否是笔记本电脑,请尝试:
[ -d /sys/module/battery ] && echo "Yes it's a laptop"
Run Code Online (Sandbox Code Playgroud)
这种方法不需要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"
Run Code Online (Sandbox Code Playgroud)
这种方法不需要root
特权。
在带有实际电池的 Debian 系统上,该/sys/module/battery
目录包含许多文件。一个这样的文件是/sys/module/battery/initstate
包含文本live
. 然而,在 Ubuntu 上,这些文件甚至在实际的笔记本电脑上也不存在。因此,该文件的存在似乎/sys/module/battery/initstate
可用于测试运行 Debian 的笔记本电脑。
相比之下,在我测试的 Debian 系统上,该/proc/acpi/battery
目录不存在。
我会检查计算机是否安装了电池。以下是一种测试方法:
if [ -d /proc/acpi/battery/BAT* ]; then
echo has a battery
fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3112 次 |
最近记录: |