如何在Linux(Ubuntu)下获取CPU序列号而无需root权限?
我尝试了cpuid命令,它可以在没有root权限的情况下工作,但似乎返回全部为零(我认为是因为需要在BIOS中更改某些设置)。
请问是否有其他方法从程序中获取CPU序列号,而无需root权限且不必修改BIOS设置?
如何在Linux(Ubuntu)下获取CPU序列号而无需root权限?
我尝试了cpuid命令,它可以在没有root权限的情况下工作,但似乎返回全部为零(我认为是因为需要在BIOS中更改某些设置)。
请问是否有其他方法从程序中获取CPU序列号,而无需root权限且不必修改BIOS设置?
需要 root 权限。答案是 dmidecode。
如果需要 CPU ID:
dmidecode | grep -w ID | sed "s/^.ID\: //g"
这将获取CPU ID,并从输出中删除“ID:”
如果您需要接收计算机ID:
dmidecode | grep -w UUID | sed "s/^.UUID\: //g"
如果您希望在无需root权限的情况下获取内核uuid,请执行以下操作:
dmesg | grep UUID | grep "Kernel" | sed "s/.*UUID=//g" | sed "s/\ ro\ quiet.*//g"
最近的评论引起了这一点。很久以前发生的事情,所以现在无法解释为什么这些ID被视为机器标识符。从处理器信息
部分获取了实际的处理器ID。在Debian操作系统上提取。
pr=0; dmidecode | while read line; do [ "$line" == "Processor Information" ] && pr=1; [ $pr -eq 0 ] && continue; [ -n "$(echo $line | grep '^ID')" ] && echo $line | awk -F"ID: " '{print $2}' && break; done
dmidecode
能够获取一些信息,但我不知道从哪里获取。我们能确定这不仅仅是来自主板吗? - Peter CordesIntel(R) Core(TM) i7-6700K CPU @ 4.00GHz
后会进行编程。 (Intel 还可以关闭 SIMD 单元的高半部分,使其成为 Celeron 或 Pentium,即使存在短路缺陷也可使用。) - Peter Cordescpuid
返回相同的序列号,无论我是否使用 sudo
:
% cpuid | grep serial
Processor serial: 0002-0652-0000-0000-0000-0000
% sudo cpuid | grep serial
Processor serial: 0002-0652-0000-0000-0000-0000
除非你指的是其他序列号...?
如此问题之前所建议的那样,如果您正在尝试将其用于许可证(因为您使用了许可标签),则可以尝试MAC地址: CPU序列号
CPU 没有序列号;也许您想要 DMI 基本信息而不需要 root 权限(这只会向您显示主板制造商和型号的持久 ID,但没有序列号):
dmesg | grep -i dmi: | cut -d ":" -f 2-
sudo chmod +s /usr/sbin/dmidecode
然后你可以运行例如:
dmidecode -s system-serial-number
mount | grep "on / type" | awk '{print $1}'
前者将提供您的系统挂载的设备路径(对于我的操作系统,它返回了/dev/sda7),然后您可以使用以下命令找到其ID:
find /dev/disk/by-id/ -lname "*sda" ! -name "wwn*"
所以从系统硬盘查找唯一标识的完整命令可能是:
find /dev/disk/by-id/ -lname "*`mount | grep " / " | awk '{print $1}' | cut -b 6-8`" ! -name "wwn*" -printf "%f\n"
你检查过dmesg
了吗?它在/bin
目录下。