Linux下获取CPUID、硬盘序列号与MAC地址

合集下载

查看Linux系统内存、CPU、磁盘使用率和详细信息

查看Linux系统内存、CPU、磁盘使用率和详细信息

查看Linux系统内存、CPU、磁盘使⽤率和详细信息⼀、查看内存占⽤1、free# free -m以MB为单位显⽰内存使⽤情况[root@localhost ~]# free -mtotal used free shared buff/cache availableMem: 118521250866841019349873Swap: 601506015# free -h以GB为单位显⽰内存使⽤情况[root@localhost ~]# free -htotal used free shared buff/cache availableMem: 11G 1.2G 8.5G 410M 1.9G 9.6GSwap: 5.9G 0B 5.9G# free -t以总和的形式查询内存的使⽤信息[root@localhost ~]# free -ttotal used free shared buff/cache availableMem: 1213733212853448870628420268198136010105740Swap: 616038006160380Total: 18297712128534415031008# free -s 5周期性的查询内存使⽤信息每5秒执⾏⼀次命令[root@localhost ~]# free -s 5total used free shared buff/cache availableMem: 1213733212807968875008420268198152810110136Swap: 616038006160380解释:Mem:内存的使⽤情况总览表(物理内存)Swap:虚拟内存。

即可以把数据存放在硬盘上的数据shared:共享内存,即和普通⽤户共享的物理内存值buffers:⽤于存放要输出到disk(块设备)的数据的cached:存放从disk上读出的数据total:机器总的物理内存used:⽤掉的内存free:空闲的物理内存注:物理内存(total)=系统看到的⽤掉的内存(used)+系统看到空闲的内存(free)2、查看某个pid的物理内存使⽤情况# cat /proc/PID/status | grep VmRSS[root@localhost ~]# pidof nginx2732727326[root@localhost ~]#[root@localhost ~]# cat /proc/27327/status | grep VmRSSVmRSS: 2652 kB[root@localhost ~]#[root@localhost ~]# cat /proc/27326/status | grep VmRSSVmRSS: 1264 kB[root@localhost ~]#[root@localhost ~]# pidof java1973[root@localhost ~]# cat /proc/1973/status | grep VmRSSVmRSS: 1166852 kB由上⾯可知,nginx服务进程的两个pid所占物理内存为"2652+1264=3916k"3、查看本机所有进程的内存占⽐之和# cat mem_per.sh[root@localhost ~]# cat mem_per.sh#!/bin/bashps auxw|awk '{if (NR>1){print $4}}' > /opt/mem_listawk '{MEM_PER+=$1}END{print MEM_PER}' /opt/mem_list[root@localhost ~]#[root@localhost ~]# chmod755 mem_per.sh[root@localhost ~]#[root@localhost ~]# sh mem_per.sh64.4[root@localhost ~]#脚本配置解释:ps -auxw|awk '{print $3}' 表⽰列出本机所有进程的cpu利⽤率情况,结果中第⼀⾏带"%CPU"字符ps -auxw|awk '{print $4}' 表⽰列出本机所有进程的内存利⽤率情况,结果中第⼀⾏带"%MEM"字符ps auxw|awk '{if (NR>1){print $4}} 表⽰将"ps auxw"结果中的第⼀⾏过滤(NR>1)掉,然后打印第4⾏⼆、查看CPU使⽤情况1、toptop后键⼊P看⼀下谁占⽤最⼤# top -d 5周期性的查询CPU使⽤信息每5秒刷新⼀次top - 02:37:55 up 4 min, 1 user, load average: 0.02, 0.10, 0.05Tasks: 355 total, 1 running, 354 sleeping, 0 stopped, 0 zombie%Cpu(s): 3.0 us, 2.8 sy, 0.0 ni, 94.2id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st# us:表⽰⽤户空间程序的cpu使⽤率(没有通过nice调度)# sy:表⽰系统空间的cpu使⽤率,主要是内核程序。

9个Linux查看系统硬件信息命令(实例详解)

9个Linux查看系统硬件信息命令(实例详解)

9个Linux查看系统硬件信息命令(实例详解)在Linux下,我们精要遇到需要查看系统的硬件信息,这⾥我罗列了查看系统硬件信息的实⽤命令,并做了分类,实例解说。

执⾏环境:ubuntu 16.041. cpulscpu命令,查看的是cpu的统计信息.root@ubuntu:/home/peng/# lscpuArchitecture: x86_64 #cpu架构CPU op-mode(s): 32-bit, 64-bitByte Order: Little Endian #⼩尾序CPU(s): 1 #总共有1核On-line CPU(s) list: 0Thread(s) per core: 1 #每个cpu核,只能⽀持⼀个线程,即不⽀持超线程Core(s) per socket: 1Socket(s): 1NUMA node(s): 1Vendor ID: GenuineIntel #cpu产商 intelCPU family: 6Model: 158Model name: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHzStepping: 9CPU MHz: 3408.070BogoMIPS: 6816.14Hypervisor vendor: VMwareVirtualization type: full #⽀持cpu虚拟化技术L1d cache: 32KL1i cache: 32KL2 cache: 256KL3 cache: 6144KNUMA node0 CPU(s): 0查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。

root@ubuntu:/home/peng# cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 158model name : Intel(R) Core(TM) i5-7500 CPU @ 3.40GHzstepping : 9microcode : 0x48cpu MHz : 3408.070cache size : 6144 KBphysical id : 0siblings : 1core id : 0cpu cores : 1apicid : 0initial apicid : 0fpu : yesfpu_exception : yescpuid level : 22wp : yes.....2. 内存概要查看内存情况root@ubuntu:/home/peng# free -mtotal used free shared buff/cache availableMem: 1970 702 315 13 952 1025Swap: 974 20 954这⾥的单位是MB,总共的内存是1970MB。

如何在Linux系统中查看网络接口的MAC地址

如何在Linux系统中查看网络接口的MAC地址

如何在Linux系统中查看网络接口的MAC地址MAC地址(Media Access Control Address)是网络设备的唯一标识符,它在数据链路层起到重要的作用。

在Linux系统中,我们可以通过一些命令来查看网络接口的MAC地址。

本文将介绍一些常用的方法来实现这个目标。

方法一:使用ifconfig命令ifconfig命令在Linux系统中用于配置和显示网络接口的状态。

它可以显示网络接口的IP地址、MAC地址等信息。

打开终端,输入以下命令:```ifconfig```然后按回车键执行命令,系统将显示所有网络接口的相关信息。

在每个网络接口的输出中,可以找到一行标有"HWaddr"的字段,它后面的就是该接口的MAC地址。

方法二:使用ip命令ip命令是Linux系统中用于配置和显示网络接口的新一代工具。

它比ifconfig命令更加强大且易用。

打开终端,输入以下命令:```ip link show```按回车键执行命令,将显示所有网络接口的信息。

在每个网络接口的输出中,可以找到一行标有"link/ether"的字段,它后面的就是该接口的MAC地址。

方法三:查看/sys/class/net目录Linux系统将网络接口的相关信息保存在/sys/class/net目录下。

打开终端,输入以下命令:```cd /sys/class/netls```按回车键执行命令,将列出所有网络接口的文件夹。

进入对应的网络接口文件夹,例如eth0,输入以下命令:```cd eth0cat address```按回车键执行命令,将显示该接口的MAC地址。

方法四:使用arp命令arp命令用于管理系统的ARP缓存,它可以显示网络接口的IP地址、MAC地址等信息。

打开终端,输入以下命令:```arp -a```按回车键执行命令,系统将显示ARP缓存中的所有条目。

在每个条目的输出中,可以找到一列标有"ether"的字段,它后面的就是对应接口的MAC地址。

获取硬盘序列号

获取硬盘序列号

取网卡MAC、硬盘序列号、CPUID、BIOS编号2011-03-10 10:48:58| 分类:古老的程序片段| 标签:|字号大中小订阅本文中所有原理及思想均取自网络,有修改。

其中获取硬盘序列号、获取CPU编号、获取BIOS编号的原始代码的著作权归各自作者所有。

以下代码可以取得系统特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度// 网卡MAC 地址,注意: MAC 地址是可以在注册表中修改的{UINT uErrorCode = 0;IP_ADAPTER_INFO iai;ULONG uSize = 0;DWORD dwResult = GetAdaptersInfo( &iai, &uSize );if( dwResult == ERROR_BUFFER_OVERFLOW ){IP_ADAPTER_INFO* piai = ( IP_ADAPTER_INFO* )HeapAlloc( GetProcessHeap( ), 0, uSize );if( piai != NULL ){dwResult = GetAdaptersInfo( piai, &uSize );if( ERROR_SUCCESS == dwResult ){IP_ADAPTER_INFO* piai2 = piai;while( piai2 != NULL && ( uSystemInfoLen + piai2->AddressLength ) < 4096U ){CopyMemory( szSystemInfo + uSystemInfoLen, piai2->Address, piai2->AddressLength );uSystemInfoLen += piai2->AddressLength;piai2 = piai2->Next;}}else{uErrorCode = 0xF0000000U + dwResult;}VERIFY( HeapFree( GetProcessHeap( ), 0, piai ) );}else{return FALSE;}}else{uErrorCode = 0xE0000000U + dwResult;}if( uErrorCode != 0U ){return FALSE;}}// 硬盘序列号,注意:有的硬盘没有序列号{OSVERSIONINFO ovi = { 0 };ovi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );GetVersionEx( &ovi );if( ovi.dwPlatformId != VER_PLATFORM_WIN32_NT ){// Only Windows 2000, Windows XP, Windows Server 2003...return FALSE;}else{if( !WinNTHDSerialNumAsPhysicalRead( szSystemInfo, &uSystemInfoLen, 1024 ) ){WinNTHDSerialNumAsScsiRead( szSystemInfo, &uSystemInfoLen, 1024 );}}}// CPU ID{BOOL bException = FALSE;BYTE szCpu[16] = { 0 };UINT uCpuID = 0U;__try{_asm{mov eax, 0cpuidmov dword ptr szCpu[0], ebxmov dword ptr szCpu[4], edxmov dword ptr szCpu[8], ecxmov eax, 1cpuidmov uCpuID, edx}}__except( EXCEPTION_EXECUTE_HANDLER ){bException = TRUE;}if( !bException ){CopyMemory( szSystemInfo + uSystemInfoLen, &uCpuID, sizeof( UINT ) );uSystemInfoLen += sizeof( UINT );uCpuID = strlen( ( char* )szCpu );CopyMemory( szSystemInfo + uSystemInfoLen, szCpu, uCpuID );uSystemInfoLen += uCpuID;}}// BIOS 编号,支持AMI, AWARD, PHOENIX{SIZE_T ssize;LARGE_INTEGER so;so.LowPart=0x000f0000;so.HighPart=0x00000000;ssize=0xffff;wchar_t strPH[30]=L\\device\\physicalmemory;DWORD ba=0;UNICODE_STRING struniph;struniph.Buffer=strPH;struniph.Length=0x2c;struniph.MaximumLength =0x2e;OBJECT_ATTRIBUTES obj_ar;obj_ar.Attributes =64;obj_ar.Length =24;obj_ar.ObjectName=&struniph;obj_ar.RootDirectory=0;obj_ar.SecurityDescriptor=0;obj_ar.SecurityQualityOfService =0;HMODULE hinstLib = LoadLibrary("ntdll.dll");ZWOS ZWopenS=(ZWOS)GetProcAddress(hinstLib,"ZwOpenSection");ZWMV ZWmapV=(ZWMV)GetProcAddress(hinstLib,"ZwMapViewOfSection");ZWUMV ZWunmapV=(ZWUMV)GetProcAddress(hinstLib,"ZwUnmapViewOfSection");//调用函数,对物理内存进行映射HANDLE hSection;if( 0 == ZWopenS(&hSection,4,&obj_ar) &&0 == ZWmapV(( HANDLE )hSection, //打开Section时得到的句柄( HANDLE )0xFFFFFFFF, //将要映射进程的句柄,&ba, //映射的基址0,0xFFFF, //分配的大小&so, //物理内存的地址&ssize, //指向读取内存块大小的指针1, //子进程的可继承性设定0, //分配类型2 //保护类型) )//执行后会在当前进程的空间开辟一段64k的空间,并把f000:0000到f000:ffff处的内容映射到这里//映射的基址由ba返回,如果映射不再有用,应该用ZwUnmapViewOfSection断开映射{BYTE* pBiosSerial = ( BYTE* )ba;UINT uBiosSerialLen = FindAwardBios( &pBiosSerial );if( uBiosSerialLen == 0U ){uBiosSerialLen = FindAmiBios( &pBiosSerial );if( uBiosSerialLen == 0U ){uBiosSerialLen = FindPhoenixBios( &pBiosSerial );}}if( uBiosSerialLen != 0U ){CopyMemory( szSystemInfo + uSystemInfoLen, pBiosSerial, uBiosSerialLen );uSystemInfoLen += uBiosSerialLen;}ZWunmapV( ( HANDLE )0xFFFFFFFF, ( void* )ba );}}// 完毕,系统特征码已取得。

C#获取机器码的方法详解(机器名,CPU编号,硬盘编号,网卡mac等)

C#获取机器码的方法详解(机器名,CPU编号,硬盘编号,网卡mac等)

C#获取机器码的⽅法详解(机器名,CPU编号,硬盘编号,⽹卡mac等)本⽂实例讲述了C#获取机器码的⽅法。

分享给⼤家供⼤家参考,具体如下:using System.Runtime.InteropServices;using System.Management;using System;public class HardwareInfo{//取机器名public string GetHostName(){return .Dns.GetHostName();}//取CPU编号public String GetCpuID(){try{ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection moc = mc.GetInstances();String strCpuID = null ;foreach( ManagementObject mo in moc ){strCpuID = mo.Properties["ProcessorId"].Value.ToString();break;}return strCpuID;}catch{return "";}}//end method//取第⼀块硬盘编号public String GetHardDiskID(){try{ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");String strHardDiskID = null ;foreach(ManagementObject mo in searcher.Get()){strHardDiskID = mo["SerialNumber"].ToString().Trim();break;}return strHardDiskID ;}catch{return "";}}//endpublic enum NCBCONST{NCBNAMSZ =16, /* absolute length of a net name */MAX_LANA =254, /* lana's in range 0 to MAX_LANA inclusive */NCBENUM =0x37, /* NCB ENUMERATE LANA NUMBERS */NRC_GOODRET =0x00, /* good return */NCBRESET =0x32, /* NCB RESET */NCBASTAT =0x33, /* NCB ADAPTER STATUS */NUM_NAMEBUF =30, /* Number of NAME's BUFFER */}[StructLayout(LayoutKind.Sequential)]public struct ADAPTER_STATUS{[MarshalAs(UnmanagedType.ByValArray, SizeConst=6)]public byte[] adapter_address;public byte rev_major;public byte reserved0;public byte adapter_type;public byte rev_minor;public ushort duration;public ushort frmr_recv;public ushort frmr_xmit;public ushort iframe_recv_err;public ushort xmit_aborts;public uint xmit_success;public uint recv_success;public ushort iframe_xmit_err;public ushort recv_buff_unavail;public ushort t1_timeouts;public ushort ti_timeouts;public uint reserved1;public ushort free_ncbs;public ushort max_cfg_ncbs;public ushort max_ncbs;public ushort xmit_buf_unavail;public ushort max_dgram_size;public ushort pending_sess;public ushort max_cfg_sess;public ushort max_sess;public ushort max_sess_pkt_size;public ushort name_count;}[StructLayout(LayoutKind.Sequential)]public struct NAME_BUFFER{[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)]public byte[] name;public byte name_num;public byte name_flags;}[StructLayout(LayoutKind.Sequential)]public struct NCB{public byte ncb_command;public byte ncb_retcode;public byte ncb_lsn;public byte ncb_num;public IntPtr ncb_buffer;public ushort ncb_length;[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)]public byte[] ncb_callname;[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)]public byte[] ncb_name;public byte ncb_rto;public byte ncb_sto;public IntPtr ncb_post;public byte ncb_lana_num;public byte ncb_cmd_cplt;[MarshalAs(UnmanagedType.ByValArray, SizeConst=10)]public byte[] ncb_reserve;public IntPtr ncb_event;}[StructLayout(LayoutKind.Sequential)]public struct LANA_ENUM{public byte length;[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.MAX_LANA)]public byte[] lana;}[StructLayout(LayoutKind.Auto)]public struct ASTAT{public ADAPTER_STATUS adapt;[MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NUM_NAMEBUF)] public NAME_BUFFER[] NameBuff;}public class Win32API{[DllImport("NETAPI32.DLL")]public static extern char Netbios(ref NCB ncb);}//取⽹卡macpublic string GetMacAddress(){string addr="";try{int cb;ASTAT adapter;NCB Ncb=new NCB();char uRetCode;LANA_ENUM lenum;Ncb.ncb_command = (byte)NCBCONST.NCBENUM;cb = Marshal.SizeOf(typeof(LANA_ENUM));Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);Ncb.ncb_length = (ushort)cb;uRetCode = bios(ref Ncb);lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM));Marshal.FreeHGlobal(Ncb.ncb_buffer);if(uRetCode != (short)NCBCONST.NRC_GOODRET)return "";for(int i=0; i < lenum.length ;i++){Ncb.ncb_command = (byte)NCBCONST.NCBRESET;Ncb.ncb_lana_num = na[i];uRetCode = bios(ref Ncb);if(uRetCode != (short)NCBCONST.NRC_GOODRET)return "";Ncb.ncb_command = (byte)NCBCONST.NCBASTAT;Ncb.ncb_lana_num = na[i];Ncb.ncb_callname[0]=(byte)'*';cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER))*(int)NCBCONST.NUM_NAMEBUF; Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);Ncb.ncb_length = (ushort)cb;uRetCode = bios(ref Ncb);adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(ADAPTER_STATUS));Marshal.FreeHGlobal(Ncb.ncb_buffer);if (uRetCode == (short)NCBCONST.NRC_GOODRET){if(i>0)addr += ":";addr = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}",adapter.adapt.adapter_address[0],adapter.adapt.adapter_address[1],adapter.adapt.adapter_address[2],adapter.adapt.adapter_address[3],adapter.adapt.adapter_address[4],adapter.adapt.adapter_address[5]);}}}catch{}return addr.Replace(' ', '0');}}更多关于C#相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家C#程序设计有所帮助。

linux查看主板型号、CPU、显卡、硬盘等信息

linux查看主板型号、CPU、显卡、硬盘等信息

linux查看主板型号、CPU、显卡、硬盘等信息系统uname -a # 查看内核/操作系统/CPU信息head -n 1 /etc/issue # 查看操作系统版本cat /proc/cpuinfo # 查看CPU信息hostname # 查看计算机名lspci -tv # 列出所有PCI设备lsusb -tv # 列出所有USB设备lsmod # 列出加载的内核模块env # 查看环境变量资源free -m # 查看内存使⽤量和交换区使⽤量df -h # 查看各分区使⽤情况du -sh <⽬录名> # 查看指定⽬录的⼤⼩grep MemTotal /proc/meminfo # 查看内存总量grep MemFree /proc/meminfo # 查看空闲内存量uptime # 查看系统运⾏时间、⽤户数、负载cat /proc/loadavg # 查看系统负载磁盘和分区mount | column -t # 查看挂接的分区状态fdisk -l # 查看所有分区swapon -s # 查看所有交换分区hdparm -i /dev/hda # 查看磁盘参数(仅适⽤于IDE设备)dmesg | grep IDE # 查看启动时IDE设备检测状况⽹络ifconfig # 查看所有⽹络接⼝的属性iptables -L # 查看防⽕墙设置route -n # 查看路由表netstat -lntp # 查看所有监听端⼝netstat -antp # 查看所有已经建⽴的连接netstat -s # 查看⽹络统计信息进程ps -ef # 查看所有进程top # 实时显⽰进程状态⽤户w # 查看活动⽤户id <⽤户名> # 查看指定⽤户信息last # 查看⽤户登录⽇志cut -d: -f1 /etc/passwd # 查看系统所有⽤户cut -d: -f1 /etc/group # 查看系统所有组crontab -l # 查看当前⽤户的计划任务服务chkconfig --list # 列出所有系统服务chkconfig --list | grep on # 列出所有启动的系统服务程序rpm -qa # 查看所有安装的软件包查看⽹卡型号lspci | grep Ethernet00:19.0 Ethernet controller: Intel Corporation 82567V-2 Gigabit Network Connection查看硬盘信息(查看硬盘型号和硬盘序列号):df -hFilesystem Size Used Avail Use% Mounted on/dev/sda5 2.0G 272M 1.6G 15% //dev/sda8 199G 188M 189G 1% /home/dev/sda3 9.7G 1.3G 7.9G 15% /usr/dev/sda2 9.7G 198M 9.0G 3% /var/dev/sda1 99M 17M 77M 18% /boot/dev/sda:Model=SAMSUNG HE253GJ , FwRev=1AJ30001, SerialNo= S2B5J90ZC12060Config={ Fixed }RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=?16?CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}PIO modes: pio0 pio1 pio2 pio3 pio4DMA modes: mdma0 mdma1 mdma2UDMA modes: udma0 udma1 udma2AdvancedPM=yes: disabled (255) WriteCache=enabledDrive conforms to: unknown: ATA/ATAPI-0 ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7 * signifies the current active modedmesg | grep ATAata1: SATA max UDMA/133 cmd 0xf190 ctl 0xf180 bmdma 0xf150 irq 185ata2: SATA max UDMA/133 cmd 0xf170 ctl 0xf160 bmdma 0xf158 irq 185ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)ata1.00: ATA-8: SAMSUNG HE253GJ, 1AJ30001, max UDMA/133ata2: SATA link down (SStatus 0 SControl 300)Vendor: ATA Model: SAMSUNG HE253GJ Rev: 1AJ3ata3: SATA max UDMA/133 cmd 0xf130 ctl 0xf120 bmdma 0xf0f0 irq 185ata4: SATA max UDMA/133 cmd 0xf110 ctl 0xf100 bmdma 0xf0f8 irq 185ata3: SATA link down (SStatus 0 SControl 300)ata4: SATA link down (SStatus 0 SControl 300)ata5: PATA max UDMA/100 cmd 0xe040 ctl 0xe030 bmdma 0xe000 irq 177查看主板型号:dmidecode | more# dmidecode 2.10SMBIOS 2.4 present.57 structures occupying 2318 bytes.Table at 0x000E84B0.Handle 0x0000, DMI type 0, 24 bytesBIOS InformationVendor: Intel Corp.Version: GTG4310H.86A.0019.2009.0625.1334Release Date: 06/25/2009.....System Information 服务器品牌Manufacturer:Product Name: (没有信息表⽰⾮品牌或未识别)Version:Serial Number:UUID: 889BD67E-8D96-11DE-AC40-0013D4D9C9E8Wake-up Type: Power SwitchSKU Number: Not SpecifiedFamily: Not SpecifiedHandle 0x0002, DMI type 2, 15 bytesBase Board Information 主板型号/主板信息Manufacturer: Intel CorporationProduct Name: DG43GTVersion: AAE62768-300Serial Number: BTGT9340022NProcessor Information CPU信息/CPU型号/CPU主频Socket Designation: PROCESSORType: Central ProcessorFamily: Pentium DManufacturer: Intel(R) Corp.ID: 7A 06 01 00 FF FB EB BFSignature: Type 0, Family 6, Model 23, Stepping 10Version: Pentium(R) Dual-Core CPU E6500 @ 2.93GHzVoltage: 1.2 VExternal Clock: 266 MHzMax Speed: 4000 MHzCurrent Speed: 2931 MHzStatus: Populated, EnabledUpgrade: Socket LGA775Cache Information 硬件和CPU缓存情况Socket Designation: L1-CacheConfiguration: Enabled, Not Socketed, Level 1Operational Mode: Write BackInstalled Size: 32 kBMaximum Size: 32 kBBIOS Language Information BIOS语⾔Installable Languages: 1en|US|iso8859-1Currently Installed Language: en|US|iso8859-1 Physical Memory Array 主板最⼤⽀持内存Location: System Board Or MotherboardUse: System MemoryError Correction Type: NoneMaximum Capacity: 16 GBError Information Handle: Not ProvidedNumber Of Devices: 4Handle 0x002C, DMI type 19, 15 bytesMemory Array Mapped Address ⽬前的内存Starting Address: 0x00000000000Ending Address: 0x000FFFFFFFFRange Size: 4 GBPhysical Array Handle: 0x002BPartition Width: 0On Board Device Information 显卡型号Type: VideoStatus: EnabledDescription: Intelr GMA X4500 Video Device。

C#获取本地计算机名,IP,MAC地址,硬盘ID

C#获取本地计算机名,IP,MAC地址,硬盘ID

C#获取本地计算机名,IP,MAC地址,硬盘IDpublic string CpuID;public string MacAddress;public string DiskID;public string IpAddress;public string LoginUserName;public string ComputerName;public string SystemType;public string TotalPhysicalMemory; //单位:Mprivate static Computer _instance;public static Computer Instance(){if (_instance == null)_instance = new Computer();return _instance;}public Computer(){CpuID = GetCpuID();MacAddress = GetMacAddress();DiskID = GetDiskID();IpAddress = GetIPAddress();LoginUserName = GetUserName();SystemType = GetSystemType();TotalPhysicalMemory = GetTotalPhysicalMemory(); ComputerName = GetComputerName();}public string GetCpuID(){try{//获取CPU序列号代码string cpuInfo = "";//cpu序列号ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){cpuInfo = mo.Properties["ProcessorId"].Value.ToString();}moc = null;mc = null;return cpuInfo;}catch{return "unknow";}finally{}}public string GetMacAddress(){try{//获取网卡硬件地址string mac = "";ManagementClass mc = newManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"] == true){mac = mo["MacAddress"].ToString();break;}}moc = null;mc = null;return mac;}catch{return "unknow";}finally{}}public string GetIPAddress(){try{//获取IP地址string st = "";ManagementClass mc = newManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"] == true){//st=mo["IpAddress"].ToString();System.Array ar;ar = (System.Array)(mo.Properties["IpAddress"].Value);st = ar.GetValue(0).ToString();break;}}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}public string GetDiskID(){try{//获取硬盘IDString HDid = "";ManagementClass mc = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){HDid = (string)mo.Properties["Model"].Value;}moc = null;mc = null;return HDid;}catch{return "unknow";}finally{}}/// <summary>/// 操作系统的登录用户名/// </summary>/// <returns></returns>public string GetUserName(){try{string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){st = mo["UserName"].ToString();}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>/// PC类型/// </summary>/// <returns></returns>public string GetSystemType(){try{string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){st = mo["SystemType"].ToString();}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>/// 物理内存/// </summary>/// <returns></returns>public string GetTotalPhysicalMemory(){try{string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){st = mo["TotalPhysicalMemory"].ToString();}moc = null;mc = null;return st;}catch{return "unknow";}finally{}}/// <summary>////// </summary>/// <returns></returns>public string GetComputerName(){try{return System.Environment.GetEnvironmentVariable("ComputerName"); }catch{return "unknow";}finally{}。

Linux下获取CPUID、硬盘序列号与 MAC地址

Linux下获取CPUID、硬盘序列号与 MAC地址
getmacaddr (const char *ip, char *id, size_t max)
{
int i, sockfd;
struct sockaddr_in *loc;
struct ifreq req[1];
sockfd = socket (AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
struct if_settings ifru_settings;
} ifr_ifru;
}
,其中,ifrn_name为网络接口的名称,ifr_ifru.ifru_hwaddr为网络接口的MAC地址。
#ifndef MAX_IFINDEX
# define MAX_IFINDEX 8
#endif
static int
short ifru_flags;
int ifru_ivalue;
int ifru_mtu;
struct ifmap ifru_map;
char ifru_slave[IFNAMSIZ]; /* Just fits the size */
char ifru_newname[IFNAMSIZ];
void * ifru_data;
snprintf (id, max, "%08lx %08lx %08lx %08lx", eax, ebx, ecx, edx);
fprintf (stdout, "get cpu id: %s\n", id);
return 0;
}
这个的实现,采用的是读取/etc/mtab文件,找到/(即根目录)挂载的设备文件,然后打开它,再用系统调用ioctl来实现的。

查询磁盘scsi_id的方法

查询磁盘scsi_id的方法

查询磁盘scsi_id的方法
在Linux操作系统中,磁盘scsi_id是唯一标识一块磁盘的一个关键信息。

它能够帮助我们确定磁盘的唯一身份,以及在磁盘来回移动时识别其更改的位置。

因此,了解如何查询磁盘scsi_id是非常重要的。

1. 使用命令行
可以在终端控制台上使用命令行来查询磁盘scsi_id。

具体操作步骤如下:
1) 打开终端控制台,输入以下命令:
lsblk
该命令用于显示当前系统的所有存储设备,包括硬盘、移动设备、U盘等等。

执行该命令后,会显示出所有磁盘的设备名称、磁盘分区大小等信息。

假设要查询sda磁盘的scsi_id,可以使用以下命令:
sudo scsi_id -g -u -s /block/sda
该命令中的“/block/sda”表示需要查询的磁盘路径,可以根据实际情况进行修改。

执行该命令后,会输出该磁盘的scsi_id信息。

2. 使用图形界面
1) 进入“磁盘”应用程序
打开Ubuntu上的“活动”图标,搜索“磁盘”应用程序并打开。

2) 查看磁盘信息
在“磁盘”应用程序中,可以看到所有磁盘的基本信息,包括设备名称、磁盘分区大小、磁盘类型等。

找到要查询的磁盘,点击它的设备名称。

在弹出的磁盘信息对话框中,可以看到该磁盘的更多详细信息,包括scsi_id等信息。

总结
查询磁盘scsi_id是Linux系统中非常重要的一个任务。

通过以上两种方法,用户可以轻松地查询磁盘的scsi_id信息。

如果用户想要使用Linux系统进行磁盘分区、格式化等操作,了解磁盘scsi_id信息就显得尤为必要。

如何在Linux系统中查看系统硬件信息

如何在Linux系统中查看系统硬件信息

如何在Linux系统中查看系统硬件信息在使用Linux系统时,了解计算机的硬件信息对于优化性能、故障排除和系统管理都非常重要。

幸运的是,在Linux中,我们可以使用一些命令和工具来查看系统的硬件信息。

本文将介绍在Linux系统中查看系统硬件信息的几种常用方法。

1. 使用lshw命令lshw是Linux硬件检测工具,它可以提供完整的硬件信息。

要使用lshw命令,请按照以下步骤操作:打开终端窗口,输入以下命令并按下回车键:```sudo lshw```系统可能会要求你输入管理员密码以获得root访问权限。

一旦通过验证,lshw将会列出所有系统硬件的详细信息,包括处理器、内存、磁盘、显卡等。

你可以根据需要滚动查看或使用管道将结果输出到文件中。

2. 使用dmidecode命令dmidecode是一个命令行工具,用于从BIOS中读取硬件信息。

要使用dmidecode命令,请按照以下步骤操作:打开终端窗口,输入以下命令并按下回车键:sudo dmidecode```dmidecode将显示系统的各种硬件组件的详细信息,包括处理器、内存、磁盘、主板、BIOS等。

通过阅读该命令的输出,你可以了解系统的硬件规格和配置信息。

3. 使用lspci命令lspci是一个用于列出PCI设备信息的命令。

要使用lspci命令,请按照以下步骤操作:打开终端窗口,输入以下命令并按下回车键:```lspci```lspci命令将列出所有PCI设备的信息,包括网络适配器、声卡、显卡、USB控制器等。

你可以根据需要滚动查看或使用管道将结果输出到文件中。

4. 使用lsblk命令lsblk命令可以用来显示系统中所有块设备的信息,包括硬盘、分区和挂载点。

要使用lsblk命令,请按照以下步骤操作:打开终端窗口,输入以下命令并按下回车键:lsblk```lsblk命令将显示系统中所有块设备的树形结构,包括设备名称、大小、挂载点等。

通过阅读该命令的输出,你可以了解系统中存储设备的配置情况。

C获取电脑硬件信息(CPUID、主板ID、硬盘ID、BIOS编号)

C获取电脑硬件信息(CPUID、主板ID、硬盘ID、BIOS编号)

C#获取电‎脑硬件信息‎(CPU ‎I D、主板‎I D、硬盘‎I D、BI‎O S编号)‎‎最近学‎习过程中,‎想到提取系‎统硬件信息‎做一些验证‎,故而对网‎上提到的利‎用.NET‎Syst‎e m.Ma‎n agem‎e nt类获‎取硬件信息‎做了进一步‎的学习、验‎证。

验证是‎分别在4台‎电脑,XP‎SP3系‎统中进行,‎特将验证过‎程记录于此‎。

‎说明:‎电脑1(联‎想品牌电脑‎);电脑‎2(HP品‎牌电脑);‎电脑3(‎联想品牌电‎脑);电‎脑4(兼容‎机);‎•获取C‎P U编号:‎Dim ‎m c As‎New ‎M anag‎e ment‎C lass‎("Win‎32_Pr‎o cess‎o r")‎D im m‎o c As‎Mana‎g emen‎t Obje‎c tCol‎l ecti‎o n = ‎m c.Ge‎t Inst‎a nces‎()Di‎m str‎I D As‎Stri‎n g = ‎N othi‎n gFo‎r Eac‎h mo ‎A s Ma‎n agem‎e ntOb‎j ect ‎I n mo‎cst‎r ID =‎mo.P‎r oper‎t ies(‎"Proc‎e ssor‎I d").‎V alue‎.ToSt‎r ing(‎)Ex‎i t Fo‎rNex‎ttex‎t Box1‎.Text‎+= "‎C PU I‎D:" +‎strI‎D‎返回‎结果:‎‎电脑1‎:CPU ‎I D:BF‎E BFBF‎F0000‎0F27‎‎电脑‎2:CPU‎ID:B‎F EBFB‎F F000‎00F27‎‎电‎脑3:CP‎U ID:‎B FEBF‎B FF00‎000F2‎9‎‎电脑4:C‎P U ID‎:BFEB‎F BFF0‎0000F‎29‎•获取主板‎编号:D‎i m mc‎As N‎e w Ma‎n agem‎e ntCl‎a ss("‎W in32‎_Base‎B oard‎")Di‎m moc‎As M‎a nage‎m entO‎b ject‎C olle‎c tion‎= mc‎.GetI‎n stan‎c es()‎Dim ‎s trID‎As S‎t ring‎= No‎t hing‎For ‎E ach ‎m o As‎Mana‎g emen‎t Obje‎c t In‎moc‎strI‎D = m‎o.Pro‎p erti‎e s("S‎e rial‎N umbe‎r").V‎a lue.‎T oStr‎i ng()‎Exi‎t For‎Next‎text‎B ox1.‎T ext ‎+= "主‎板 ID:‎" + s‎t rID‎‎返回结果‎:‎‎电脑1:主‎板 ID:‎‎电‎脑2:主板‎ID:C‎N2440‎1483‎‎电脑‎3:主板‎I D:AZ‎F2410‎01101‎‎电‎脑4:主板‎ID: ‎•获‎取硬盘编号‎:Man‎a geme‎n tCla‎s s mc‎= ne‎w Man‎a geme‎n tCla‎s s("W‎i n32_‎P hysi‎c alMe‎d ia")‎;/‎/网上有提‎到,用Wi‎n32_D‎i skDr‎i ve,但‎是用Win‎32_Di‎s kDri‎v e获得的‎硬盘信息中‎并不包含S‎e rial‎N umbe‎r属性。

linux查看硬件配置命令

linux查看硬件配置命令

linux查看硬件配置命令linux下可以通过命令查看电脑的硬件配置,那么具体用哪个命令呢?下面由店铺为大家整理了linux查看硬件配置命令大全,希望大家喜欢!linux查看硬件配置命令1.查看机器所有硬件信息dmidecode |moredmesg |more这2个命令出来的信息都非常多,所以建议后面使用"|more"便于查看linux查看硬件配置命令2.查看CPU信息方法一:Linux下CPU相关的参数保存在 /proc/cpuinfo 文件里cat /proc/cpuinfo |more方法二:采用命令 dmesg | grep CPU 可以查看到相关CPU的启动信息查看CPU的位数:getconf LONG_BITlinux查看硬件配置命令3.查看Mem信息cat /proc/meminfo |more (注意输出信息的最后一行:MachineMem: 41932272 kB)free -m[cpp] view plain copy print?root@localhost ~]# free -mtotal used free shared buffers cachedMem: 503 331 171 0 75 156-/+ buffers/cache: 99 404Swap: 509 0 509toplinux查看硬件配置命令4.查看磁盘信息方法一:fdisk -l 可以看到系统上的磁盘(包括U盘)的分区以及大小相关信息。

方法二:直接查看cat /proc/partitionslinux查看硬件配置命令5.查看网卡信息方法一:ethtool eth0 采用此命令可以查看到网卡相关的技术指标(不一定所有网卡都支持此命令)ethtool -i eth1 加上 -i 参数查看网卡驱动可以尝试其它参数查看网卡相关技术参数方法二:也可以通过dmesg | grep eth0 等看到网卡名字(厂家)等信息通过查看/etc/sysconfig/network-scripts/ifcfg-eth0 可以看到当前的网卡配置包括IP、网关地址等信息。

linux查看硬件信息的命令详解

linux查看硬件信息的命令详解

linux查看硬件信息命令和教程详解众所周知,Linux大部分操作是通过命令实现的,并不像windows那么直观。

linux 查看硬件信息也是需要通过linux查看硬件信息命令查询的,下面小编来分享一下linux查看硬件信息的方法和命令写法。

cpulscpu命令,查看的是cpu的统计信息.blue@blue-pc:~$ lscpuArchitecture: i686 #cpu架构CPU op-mode(s): 32-bit, 64-bitByte Order: Little Endian #小尾序CPU(s): 4 #总共有4核On-line CPU(s) list: 0-3Thread(s) per core: 1 #每个cpu核,只能支持一个线程,即不支持超线程Core(s) per socket: 4 #每个cpu,有4个核Socket(s): 1 #总共有1一个cpuVendor ID: GenuineIntel #cpu产商intelCPU family: 6Model: 42Stepping: 7CPU MHz: 1600.000BogoMIPS: 5986.12Virtualization: VT-x #支持cpu虚拟化技术L1d cache: 32KL1i cache: 32KL2 cache: 256KL3 cache: 6144K查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。

#cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 42model name : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz.....上面输出的是第一个cpu部分信息,还有3个cpu信息省略了。

内存概要查看内存情况free -mtotal used free shared buffers cachedMem: 3926 3651 274 0 12 404-/+ buffers/cache: 3235 691Swap: 9536 31 9505这里的单位是MB,总共的内存是3926MB。

Linux查看网卡的MAC地址

Linux查看网卡的MAC地址

Linux查看⽹卡的MAC地址如何使⽤命令查看⽹卡的MAC地址呢?下⾯总结⼀下查看⽹卡MAC地址的⽅式。

1:ifconfig命令查看⽹卡MAC地址/sbin/ifconfig | grep HWaddr或/sbin/ifconfig | grep ether有些Linux发⾏版本的MAC地址字段为HWaddr,有些Linux发⾏版本的MAC地址字段为ether。

根据实际情况选择上⾯命令。

[root@KerryDB ~]# ifconfig -alo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 858 bytes 72251 (70.5 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 858 bytes 72251 (70.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0p4p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.20.57.24 netmask 255.255.255.0 broadcast 10.20.57.255inet6 fe80::b283:feff:fe55:32e5 prefixlen 64 scopeid 0x20<link>ether b0:83:fe:55:32:e5 txqueuelen 1000 (Ethernet)RX packets 6637181 bytes 1536293500 (1.4 GiB)RX errors 0 dropped 293652 overruns 0 frame 0TX packets 4333535 bytes 1080300983 (1.0 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0如果想只提取⽹卡MAC地址,可以使⽤下⾯命令(⽤具体的⽹卡名替换xxx)ifconfig xxx | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'[root@KerryDB tmp]# ifconfig p4p1 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'b0:83:fe:55:32:e5[root@KerryDB tmp]#⽅法2:/sys/class/net/xxx/address查看根据⽹卡名调整,例如这⾥⽹卡名为ens160,如果⽹卡名为xxx,那么应该⽤/sys/class/net/xxx/address# more /sys/class/net/ens160/address00:50:56:95:5c:16# cat /sys/class/net/eth0/address00:50:56:b3:81:f8⽅法3:ip命令查看⽹卡MAC地址[root@KerryDB tmp]# ip link1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: p4p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether b0:83:fe:55:32:e5 brd ff:ff:ff:ff:ff:ff[root@KerryDB tmp]# ip link show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: p4p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether b0:83:fe:55:32:e5 brd ff:ff:ff:ff:ff:ff[root@KerryDB tmp]# ip link show p4p12: p4p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether b0:83:fe:55:32:e5 brd ff:ff:ff:ff:ff:f[root@KerryDB tmp]# ip link show p4p1 | awk'/ether/ {print $2}';b0:83:fe:55:32:e54:nmcli命令查看⽹卡MAC地址[root@KerryDB tmp]# nmcli device show p4p1GENERAL.DEVICE: p4p1GENERAL.TYPE: ethernetGENERAL.HWADDR: B0:83:FE:55:32:E5GENERAL.MTU: 1500GENERAL.STATE: 100 (connected)GENERAL.CONNECTION: p4p1GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1WIRED-PROPERTIES.CARRIER: onIP4.ADDRESS[1]: 10.20.57.24/24IP4.GATEWAY: 10.20.57.1IP4.ROUTE[1]: dst = 10.20.57.0/24, nh = 0.0.0.0, mt = 100IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.20.57.1, mt = 100IP6.ADDRESS[1]: fe80::b283:feff:fe55:32e5/64IP6.GATEWAY: --IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255IP6.ROUTE[2]: dst = fe80::/64, nh = ::, mt = 256[root@KerryDB tmp]# nmcli device show p4p1 | grep -i hwGENERAL.HWADDR: B0:83:FE:55:32:E5注意:这⾥根据实际的⽹卡名进⾏调整,如果⽹卡名为ens160,那么上⾯命令需要调整为# nmcli device show ens160 | grep -i hwaddrGENERAL.HWADDR: 00:50:56:B4:00:945:dmesg命令查看⽹卡MAC地址[root@KerryDB tmp]# dmesg | grep eth[ 0.776155] r8169 0000:02:00.0 eth0: RTL8168g/8111g at 0xffffafbe80648000, b0:83:fe:55:32:e5, XID 0c000800 IRQ 27 [ 0.776158] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]。

Linux下如何查看CPU信息, 包括位数和多核信息

Linux下如何查看CPU信息, 包括位数和多核信息

PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
L1 Cache Handle: 0x0005
L2 Cache Handle: 0x0006
L3 Cache Handle: 0x0007
Serial Number: To Be Filled By O.E.M.
Asset Tag: ToFra bibliotekBe Filled By O.E.M.
Signature: Type 0, Family 6, Model 17, Stepping A
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
Voltage: 1.2 V
External Clock: 333 MHz
Max Speed: 2333 MHz
Current Speed: 2333 MHz
Status: Populated, Enabled
Upgrade:
Linux下如何查看CPU信息, 包括位数和多核信息
# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
Voltage: 1.2 V

获取硬盘序列号

获取硬盘序列号

用api函数读取硬盘的序列号关于盘序列号有两种:硬盘序列号: 英文名Hard Disk Serial Number, 该号是出厂时生产厂家为区别产品而设置的, 是唯一的, 是只读的, 利用硬盘序列号的加密往往是利用其唯一和只读的特性, 大多是针对有序列号的IDE HDD而言, 对于没有序列号或SCSI HDD硬盘则无能为力,这也是利用它进行加密的局限性.卷的序列号: 英文名Volume Serial Number, 该号既可指软磁盘要得, 如:A:盘和B:盘的, 又可以指硬盘的逻辑盘, 如: C:, D:...的,是高级格式化时随机产生的, 是可以修改的, 所以利用其进行加密,在写程序时我们想对每一台计算机都生成一个唯一的标识,而且在一此共享软件中我们也看到,软件在不同的机器上生成了不同的标识,这是如何实现的呢,其实是软件有一部分程序读取了,本地计算机的一部分硬件参数(如硬盘序列号,网卡序列号等等),再通过一系列算法而得到了一个唯一标识,其实我们也可以通过一个api函数生成我们的唯一标识,由于硬盘人人都有,而网卡不一定每个人都有,所以以读硬盘序列号为例,下面就先介绍一下我们要用到的api函数BOOL GetVolumeInformation(LPCTSTR lpRootPathName, // 硬盘的路径LPTSTR lpVolumeNameBuffer, // 硬盘的卷标DWORD nVolumeNameSize, // 卷标的字符串长度LPDWORD lpVolumeSerialNumber, // 硬盘的序列号LPDWORD lpMaximumComponentLength, // 最大的文件长度LPDWORD lpFileSystemFlags, // 文件系统的一此标志LPTSTR lpFileSystemNameBuffer, // 存储所在盘符的分区类型的长指针变量DWORD nFileSystemNameSize // 分区类型的长指针变量所指向的字符串长度);如果上述函数成功就返回一个非0值。

Linux如何查看NVMe磁盘序列号

Linux如何查看NVMe磁盘序列号

Linux如何查看NVMe磁盘序列号Linxu 如何查看NVMe磁盘的序列号呢?下⾯是我测试过的⼏种⽅法。

OS环境:CentOS Linux release 7.8.2003 (Core)磁盘:/dev/sda是做RAID1的SSD。

/dev/nvme1n1、/dev/nvme0n1是NVMe磁盘,没有做RAID。

⽅法⼀ lsblk因为/dev/sda逻辑盘,SERIAL应该只是系统⽣产的⼀个ID。

[root@my-host-1 tmp]# lsblk -o name,type,serial /dev/sdaNAME TYPE SERIALsda disk 600508b1001c53f4be54e7bb874d7171└─data-data lvmlsblk也是可以看到NVMe磁盘的信息的[root@my-host-1 tmp]# lsblk -o name,type,serial /dev/nvme0n1NAME TYPE SERIALnvme0n1 disk T090FRRV1⽅法⼆ smartctl[root@my-host-1 ~]# smartctl --all /dev/sdasmartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1127.el7.x86_64] (local build) Copyright (C) 2002-18, Bruce Allen, Christian Franke, === START OF INFORMATION SECTION ===Vendor: UNProduct: LOGICAL VOLUMERevision: 2.30Compliance: SPC-3User Capacity: 1,920,326,787,072 bytes [1.92 TB]Logical block size: 512 bytesPhysical block size: 4096 bytesRotation Rate: Solid State DeviceLogical Unit id: 0x600508b1001c53f4be54e7bb874d7171Serial number:Device type: diskLocal Time is: Wed Jan 6 16:04:23 2021 CSTSMART support is: Available - device has SMART capability.SMART support is: EnabledTemperature Warning: Disabled or Not Supported=== START OF READ SMART DATA SECTION ===SMART Health Status: OKCurrent Drive Temperature: 0 CDrive Trip Temperature: 0 CError Counter logging not supportedDevice does not support Self Test loggingsmartctl获取/dev/nvme1n1信息[root@my-host-1 ~]# smartctl --all /dev/nvme1n1smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1127.el7.x86_64] (local build) Copyright (C) 2002-18, Bruce Allen, Christian Franke, === START OF INFORMATION SECTION ===Model Number: P50D7040B160Serial Number: T090FRRR6Firmware Version: 001008N1PCI Vendor/Subsystem ID: 0x1c5fIEEE OUI Identifier: 0x00e0cfTotal NVM Capacity: 4,000,787,030,016 [4.00 TB]Unallocated NVM Capacity: 0Controller ID: 1Number of Namespaces: 1Namespace 1 Size/Capacity: 4,000,787,030,016 [4.00 TB]Namespace 1 Formatted LBA Size: 512Local Time is: Wed Jan 6 15:17:13 2021 CSTFirmware Updates (0x07): 3 Slots, Slot 1 R/OOptional Admin Commands (0x000e): Format Frmw_DL NS_MngmtOptional NVM Commands (0x0014): DS_Mngmt Sav/Sel_FeatMaximum Data Transfer Size: 32 PagesWarning Comp. Temp. Threshold: 70 CelsiusCritical Comp. Temp. Threshold: 80 CelsiusSupported Power StatesSt Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat0 + 25.00W - - 0 0 0 0 100 1001 + 20.00W - - 1 1 1 1 200 2002 + 15.00W - - 2 2 2 2 300 300Supported LBA Sizes (NSID 0x1)Id Fmt Data Metadt Rel_Perf0 + 512 0 21 - 4096 0 02 - 512 0 23 - 4096 0 0=== START OF SMART DATA SECTION ===SMART overall-health self-assessment test result: PASSEDSMART/Health Information (NVMe Log 0x02)Critical Warning: 0x00Temperature: 36 CelsiusAvailable Spare: 100%Available Spare Threshold: 5%Percentage Used: 0%Data Units Read: 3,547,572 [1.81 TB]Data Units Written: 3,482,861 [1.78 TB]Host Read Commands: 13,877,453Host Write Commands: 13,604,929Controller Busy Time: 71Power Cycles: 550Power On Hours: 6,573Unsafe Shutdowns: 512Media and Data Integrity Errors: 0Error Information Log Entries: 0Warning Comp. Temperature Time: 0Critical Comp. Temperature Time: 0Temperature Sensor 1: 39 CelsiusTemperature Sensor 2: 36 CelsiusTemperature Sensor 3: 30 CelsiusTemperature Sensor 4: 29 CelsiusError Information (NVMe Log 0x01, max 63 entries)No Errors Logged⽅法三 nvme client⼯具nvme⼯具提供⽤于获取NVME设备信息的选项[root@my-host-1 ~]# wget https:///centos/7.9.2009/os/x86_64/Packages/nvme-cli-1.8.1-3.el7.x86_64.rpm --no-check-certificate [root@my-host-1 ~]# rpm -ivh nvme-cli-1.8.1-3.el7.x86_64.rpmnvme⼯具帮助信息[root@my-host-1 ~]# nvme helpnvme-1.8.1usage: nvme <command> [<device>] [<args>]The '<device>' may be either an NVMe character device (ex: /dev/nvme0) or annvme block device (ex: /dev/nvme0n1).The following are all implemented sub-commands:list List all NVMe devices and namespaces on machinelist-subsys List nvme subsystemsid-ctrl Send NVMe Identify Controllerid-ns Send NVMe Identify Namespace, display structurelist-ns Send NVMe Identify List, display structurens-descs Send NVMe Namespace Descriptor List, display structureid-nvmset Send NVMe Identify NVM Set List, display structurecreate-ns Creates a namespace with the provided parametersdelete-ns Deletes a namespace from the controllerattach-ns Attaches a namespace to requested controller(s)detach-ns Detaches a namespace from requested controller(s)list-ctrl Send NVMe Identify Controller List, display structureget-ns-id Retrieve the namespace ID of opened block deviceget-log Generic NVMe get log, returns log in raw formattelemetry-log Retrieve FW Telemetry log write to filefw-log Retrieve FW Log, show itchanged-ns-list-log Retrieve Changed Namespace List, show itsmart-log Retrieve SMART Log, show itana-log Retrieve ANA Log, show iterror-log Retrieve Error Log, show iteffects-log Retrieve Command Effects Log, show itendurance-log Retrieve Endurance Group Log, show itget-feature Get feature and show the resulting valuedevice-self-test Perform the necessary tests to observe the performanceself-test-log Retrieve the SELF-TEST Log, show itset-feature Set a feature and show the resulting valueset-property Set a property and show the resulting valueget-property Get a property and show the resulting valueformat Format namespace with new block formatfw-commit Verify and commit firmware to a specific slot (fw-activate in old version < 1.2)fw-download Download new firmwareadmin-passthru Submit an arbitrary admin command, return resultsio-passthru Submit an arbitrary IO command, return resultssecurity-send Submit a Security Send command, return resultssecurity-recv Submit a Security Receive command, return resultsresv-acquire Submit a Reservation Acquire, return resultsresv-register Submit a Reservation Register, return resultsresv-release Submit a Reservation Release, return resultsresv-report Submit a Reservation Report, return resultsdsm Submit a Data Set Management command, return resultsflush Submit a Flush command, return resultscompare Submit a Compare command, return resultsread Submit a read command, return resultswrite Submit a write command, return resultswrite-zeroes Submit a write zeroes command, return resultswrite-uncor Submit a write uncorrectable command, return resultssanitize Submit a sanitize commandsanitize-log Retrieve sanitize log, show itreset Resets the controllersubsystem-reset Resets the subsystemns-rescan Rescans the NVME namespacesshow-regs Shows the controller registers or properties. Requires character devicediscover Discover NVMeoF subsystemsconnect-all Discover and Connect to NVMeoF subsystemsconnect Connect to NVMeoF subsystemdisconnect Disconnect from NVMeoF subsystemdisconnect-all Disconnect from all connected NVMeoF subsystemsgen-hostnqn Generate NVMeoF host NQNdir-receive Submit a Directive Receive command, return resultsdir-send Submit a Directive Send command, return resultsvirt-mgmt Manage Flexible Resources between Primary and Secondary Controllerversion Shows the program versionhelp Display this helpSee 'nvme help <command>' for more information on a specific commandThe following are all installed plugin extensions:intel Intel vendor specific extensionslnvm LightNVM specific extensionsmemblaze Memblaze vendor specific extensionswdc Western Digital vendor specific extensionshuawei Huawei vendor specific extensionsnetapp NetApp vendor specific extensionstoshiba Toshiba NVME pluginmicron Micron vendor specific extensionsseagate Seagate vendor specific extensionsSee 'nvme <plugin> help' for more information on a pluginnvme list 获取NVMe磁盘信息[root@my-host-1 ~]# nvme listNode SN Model Namespace Usage Format FW Rev---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------/dev/nvme0n1 T090FRRV1 P50D7040B160 1 4.00 TB / 4.00 TB 512 B + 0 B 001008N1/dev/nvme1n1 T090FRRR6 P50D7040B160 1 4.00 TB / 4.00 TB 512 B + 0 B 001008N1总结:我的环境NVMe磁盘没有做RAID,在做RAID的情况下,系统看到的是逻辑盘,未必可以获取物理磁盘的信息。

Linux终端命令中的硬件信息查询

Linux终端命令中的硬件信息查询

Linux终端命令中的硬件信息查询Linux操作系统提供了丰富的终端命令,其中包括一些用于查询硬件信息的命令,本文将介绍几个常用的终端命令,用于查询硬件信息。

一、CPU信息查询1. lscpu命令lscpu命令可以用来显示CPU的相关信息,包括CPU型号、核心数、线程数等。

2. cat /proc/cpuinfo命令使用cat命令读取/proc/cpuinfo文件可以获取更详细的CPU信息,包括厂商、型号、频率、缓存等。

二、内存信息查询1. free命令free命令可以查看系统内存的使用情况,包括总内存、已使用内存、空闲内存等。

2. dmidecode命令使用dmidecode命令可以获取更详细的内存信息,如型号、容量、频率等。

三、硬盘信息查询1. fdisk -l命令fdisk -l命令可以列出系统中所有的磁盘分区信息,包括硬盘的容量、文件系统等。

2. df命令df命令用于显示文件系统的磁盘空间使用情况,包括每个硬盘分区的总空间、已使用空间、可用空间等。

四、网卡信息查询1. ifconfig命令ifconfig命令可以显示网络接口的配置信息,包括IP地址、MAC地址等。

2. lspci命令lspci命令可以列出所有PCI设备的信息,包括网卡型号、厂商等。

五、USB设备信息查询1. lsusb命令lsusb命令可以列出系统中所有的USB设备,包括设备的厂商、型号等。

六、声卡信息查询1. aplay -l命令aplay -l命令可以查看系统中的声卡信息,包括声卡的型号、驱动等。

以上是常用的一些Linux终端命令,可以用于查询硬件信息。

在使用这些命令时,可以根据需求结合管道符号"|"和grep命令,来过滤和搜索特定的信息。

通过查询硬件信息,我们可以更好地了解系统的硬件配置,对于故障排查和性能优化也有一定的帮助。

总结:本文介绍了Linux终端命令中的硬件信息查询,包括CPU信息查询、内存信息查询、硬盘信息查询、网卡信息查询、USB设备信息查询以及声卡信息查询。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux下获取CPUID、硬盘序列号与 MAC地址在很多系统软件的开发中,需要使用一些系统的唯一性信息。

所以,得到主机的CPUID、硬盘序列号及网卡的MAC地址,就成个一件很重要的应用。

本人经过一番google即自己的钻研,基本上实现了这几个功能。

需要的准备知识有:1.GCC的嵌入汇编,具体的GCC嵌入汇编知识,请参考相关手册2.ioctl系统调用,具体的调用方法,请查看手册页获取CPUID按照网上提供的说明,CPUID并不是所有的Intel CPU都支持的。

如果支持,汇编调用为:eax置0000_0003,调用cpuid。

以下为实现代码(在我的CPU上,并没有得到):#define cpuid(in,a,b,c,d) asm("cpuid": "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (in)); static intgetcpuid (char *id, size_t max){int i;unsigned long li, maxi, maxei, ebx, ecx, edx, unused;cpuid (0, maxi, unused, unused, unused);maxi &= 0xffff;if (maxi < 3){return -1;}cpuid (3, eax, ebx, ecx, edx);snprintf (id, max, "%08lx %08lx %08lx %08lx", eax, ebx, ecx, edx);fprintf (stdout, "get cpu id: %s\n", id);return 0;}获取硬盘序列号这个的实现,采用的是读取/etc/mtab文件,找到/(即根目录)挂载的设备文件,然后打开它,再用系统调用 ioctl来实现的。

ioctl第二个参数为HDIO_GET_IDENTITY, 获得指定文件描述符的标志号ioctl的第三个参数为struct hd_driveid *,在linux/hdreg.h中,struct hd_driveid 的声明有struct hd_driveid {unsigned short config; /* lots of obsolete bit flags */unsigned short cyls; /* Obsolete, "physical" cyls */unsigned short reserved2; /* reserved (word 2) */unsigned short heads; /* Obsolete, "physical" heads */unsigned short track_bytes; /* unformatted bytes per track */unsigned short sector_bytes; /* unformatted bytes per sector */unsigned short sectors; /* Obsolete, "physical" sectors per track */unsigned short vendor0; /* vendor unique */unsigned short vendor1; /* vendor unique */unsigned short vendor2; /* Retired vendor unique */ unsigned char serial_no[20]; /* 0 = not_specified */unsigned short buf_type; /* Retired */unsigned short buf_size; /* Retired, 512 byte increments* 0 = not_specified*/……};,这其中,serial_no为硬盘的序列号。

如果此项为0,则为没有提供。

思路明确了,以下为实现代码:static intgetdiskid (char *id, size_t max){int fd;struct hd_driveid hid;FILE *fp;char line[0x100], *disk, *root, *p;fp = fopen ("/etc/mtab", "r");if (fp == NULL){fprintf (stderr, "No /etc/mtab file.\n");return -1;}fd = -1;while (fgets (line, sizeof line, fp) != NULL){disk = strtok (line, " ");if (disk == NULL){continue;}root = strtok (NULL, " ");if (root == NULL){continue;}if (strcmp (root, "/") == 0){for (p = disk + strlen (disk) - 1; isdigit (*p); p --){*p = '\0';}fd = open (disk, O_RDONLY);break;}}fclose (fp);if (fd < 0){fprintf (stderr, "open hard disk device failed.\n");return -1;}if (ioctl (fd, HDIO_GET_IDENTITY, &hid) < 0){fprintf (stderr, "ioctl error.\n");return -1;}close (fd);snprintf (id, max, "%s", hid.serial_no);fprintf (stdout, "get hard disk serial number: %s\n", id); return 0;}获取MAC地址通过创建一个socket,然后bind特定的IP地址,就可以通过ioctl得到这个套按地绑定的网络接口名称。

然后再通过网络接口名称,得到MAC地址。

如果ioctl的第二个参数为SIOCGIFNAME, 则获得指定网络接口的名称;如果ioctl的第二个参数为SIOCGIFHWADDR,则获得指定网络接口的MAC地址ioctl的第三个参数为struct ifreq *,在linux/if.h头文件里,struct ifreq声明如下:struct ifreq{#define IFHWADDRLEN 6union{char ifrn_name[IFNAMSIZ]; /* if name, e.g. "en0" */} ifr_ifrn;union {struct sockaddr ifru_addr;struct sockaddr ifru_dstaddr;struct sockaddr ifru_broadaddr;struct sockaddr ifru_netmask;struct sockaddr ifru_hwaddr;short ifru_flags;int ifru_ivalue;int ifru_mtu;struct ifmap ifru_map;char ifru_slave[IFNAMSIZ]; /* Just fits the size */char ifru_newname[IFNAMSIZ];void * ifru_data;struct if_settings ifru_settings;} ifr_ifru;},其中,ifrn_name为网络接口的名称,ifr_ifru.ifru_hwaddr为网络接口的MAC地址。

#ifndef MAX_IFINDEX# define MAX_IFINDEX 8#endifstatic intgetmacaddr (const char *ip, char *id, size_t max){int i, sockfd;struct sockaddr_in *loc;struct ifreq req[1];sockfd = socket (AF_INET, SOCK_DGRAM, 0);if (sockfd < 0){fprintf (stderr, "Unable to create socket.\n");return -1;}for (i = 0; i <= MAX_IFINDEX; ++ i){req->ifr_ifindex = i;if (ioctl (sockfd, SIOCGIFNAME, req) < 0)fprintf (stderr, "ioctl error: %s\n", strerror (errno)); continue;}if (ioctl (sockfd, SIOCGIFADDR, req) < 0)fprintf (stderr, "ioctl interface index [%d] error: %s\n", i, strerror (errno));continue;}loc = (struct sockaddr_in *) (&(req->ifr_ifru.ifru_addr));if (loc->sin_addr.s_addr == inet_addr (ip)){fprintf (stderr, "%s bind at %s.\n", ip, req->ifr_name);break;}}if (i == MAX_IFINDEX){fprintf (stderr, "input IP error.\n");close (sockfd);return -1;}if (ioctl (sockfd, SIOCGIFHWADDR, req) < 0){fprintf (stderr, "ioctl error: %s\n", strerror (errno));close (sockfd);return -1;}close (sockfd);snprintf (id, max, "%02X%02X%02X%02X%02X%02X",req->ifr_hwaddr.sa_data[0] & 0xff,req->ifr_hwaddr.sa_data[1] & 0xff,req->ifr_hwaddr.sa_data[2] & 0xff,req->ifr_hwaddr.sa_data[3] & 0xff,req->ifr_hwaddr.sa_data[4] & 0xff,req->ifr_hwaddr.sa_data[5] & 0xff);fprintf (stdout, "MAC address of %s: [%s].\n", req->ifr_name, id);return 0;}(注:文档可能无法思考全面,请浏览后下载,供参考。

相关文档
最新文档