当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Linux 下dmidecode查看内存条数的命令      在linux下有很多命令,可以查看机器的硬件信息。 这里介绍一个查看内存的条数等信息的方法。 相看硬件信息,仅适合ubuntu系列发行版:   lshw Linux 下查看内存条数:   dmidecode |grep -A16 "Mem.........
    ▪linux查看主板内存槽与内存信息的命令dmidecode      1、查看内存槽数、那个槽位插了内存,大小是多少   dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range 2、查看最大支持内存数   dmidecode|grep -P 'Maximum\s+Capacity' 3、查看槽位上内存的速率,没.........
    ▪strace命令排除Linux服务器故障详解      strace是一个有用的小工具 – 大多数Linux系统默认已经安装 – 可以通过跟踪系统调用来让你知道一个程序在后台所做的事情。Strace是一个基础的调试工具;但是即便你不是在跟踪一个问题时它.........

[1]Linux 下dmidecode查看内存条数的命令
    来源: 互联网  发布时间: 2013-12-24

在linux下有很多命令,可以查看机器的硬件信息。
这里介绍一个查看内存的条数等信息的方法。

相看硬件信息,仅适合ubuntu系列发行版:
 

lshw

Linux 下查看内存条数:
 

dmidecode |grep -A16 "Memory Device$"

有关dmidecode命令的详细用法,请参考这篇文章:linux查看主板内存槽与内存信息的命令dmidecode 。


    
[2]linux查看主板内存槽与内存信息的命令dmidecode
    来源: 互联网  发布时间: 2013-12-24

1、查看内存槽数、那个槽位插了内存,大小是多少
 

dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range

2、查看最大支持内存数
 

dmidecode|grep -P 'Maximum\s+Capacity'

3、查看槽位上内存的速率,没插就是unknown。
 

dmidecode|grep -A16 "Memory Device"|grep 'Speed'

其实以上数值就是通过dmidecode命令来实现的,具体方法如下:

dmidecode以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息。
这些信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。
DMI有人也叫SMBIOS(System Management BIOS),这两个标准都由DMTF(Desktop Management Task Force)开发。

dmidecode的输出格式一般如下:
 

Handle 0×0002
DMI type 2, 8 bytes
Base Board Information
Manufacturer:Intel
Product Name: C440GX+
Version: 727281-0001
Serial Number: INCY92700942
 

其中的前三行都称为记录头(recoce Header), 其中包括了:
1、recode id(handle): DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0×0002。
2、dmi type id: 记录的类型,譬如说:BIOS,Memory,上例是type 2,即”Base Board Information”
3、recode size: DMI表中对应记录的大小,上例为8 bytes.(不包括文本信息,所有实际输出的内容比这个size要更大。)
记录头之后就是记录的值:

4、decoded values: 记录值可以是多行的,比如上例显示了主板的制造商(manufacturer)、model、version以及serial Number。
dmidecode的使用方法
1. 最简单的的显示全部dmi信息:
 

# dmidecode


这样将输出所有的dmi信息,你可能会被一大堆的信息吓坏,通常可以使用下面的方法。
2.更精简的信息显示:
 

# dmidecode -q


-q(–quite) 只显示必要的信息,这个很管用哦。
3.显示指定类型的信息:
通常我只想查看某类型,比如CPU,内存或者磁盘的信息而不是全部的。这可以使用-t(–type TYPE)来指定信息类型:
 

# dmidecode -t bios
# dmidecode -t bios, processor (这种方式好像不可以用,必须用下面的数字的方式)
# dmidecode -t 0,4 (显示bios和processor)
 

dmidecode到底支持哪些type?
这些可以在man dmidecode里面看到:
文本参数支持:
bios, system, baseboard, chassis, processor, memory, cache, connector, slot
数字参数支持很多:(见附录)

4.通过关键字查看信息:
比如只想查看序列号,可以使用:
 

# dmidecode -s system-serial-number
-s (–string keyword)支持的keyword包括:
bios-vendor,bios-version, bios-release-date,
system-manufacturer, system-product-name, system-version, system-serial-number,
baseboard-manu-facturer,baseboard-product-name,  baseboard-version, baseboard-serial-number, baseboard-asset-tag,
chassis-manufacturer, chas-sis-version, chassis-serial-number, chassis-asset-tag,
processor-manufacturer, processor-version.

5.示例
5.1 查看当前内存和支持的最大内存
Linux下,可以使用free或者查看meminfo来获得当前的物理内存:
 

# free
total  used  free  shared  buffers  cached
Mem:  8182532  8010792  171740  0  148472  4737896
-/+ buffers/cache:  3124424  5058108
Swap:  4192956  3304  4189652
# grep MemTotal /proc/meminfo
MemTotal:  8182532 kB
 

这里显示了当前服务器的物理内存是8GB。
服务器到底能扩展到多大的内存?
 

#dmidecode -t 16
# dmidecode 2.7
SMBIOS 2.4 present.

Handle 0×0013, DMI type 16, 15 bytes.
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 64 GB  (可扩展到64GB)
Error Information Handle: Not Provided
Number Of Devices: 4
 

但是,事实不一定如此,因此插槽可能已经插满了。也就是我们还必须查清这里的8G到底是4*2GB, 2*4GB还是其他?
如果是4*2GB,那么尽管可以扩展到64GB,但是插槽已经插满,无法扩展了:
 

#dmidecode -t 17
# dmidecode 2.7
SMBIOS 2.4 present.

Handle 0×0015, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽1有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM00
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM82
Part Number: MT9HTF6472FY-53EA2

Handle 0×0017, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽2有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM10
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM83
Part Number: MT9HTF6472FY-53EA2

Handle 0×0019, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽3有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM20
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM84
Part Number: MT9HTF6472FY-53EA2

Handle 0x001B, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽4有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM30
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM85
Part Number: MT9HTF6472FY-53EA2
 

根据上面输出可以发现,如果要扩展,只有将上面的内存条换成16GB的,才能达到4*16GB=64GB的最大支持内存。

附录:
dmidecode支持的数字参数:
 

Type  Information
0  BIOS
1  System
2  Base Board
3  Chassis
4  Processor
5  Memory Controller
6  Memory Module
7  Cache
8  Port Connector
9  System Slots
10  On Board Devices
11  OEM Strings
12  System Configuration Options
13  BIOS Language
14  Group Associations
15  System Event Log
16  Physical Memory Array
17  Memory Device
18  32-bit Memory Error
19  Memory Array Mapped Address
20  Memory Device Mapped Address
21  Built-in Pointing Device
22  Portable Battery
23  System Reset
24  Hardware Security
25  System Power Controls
26  Voltage Probe
27  Cooling Device
28  Temperature Probe
29  Electrical Current Probe
30  Out-of-band Remote Access
31  Boot Integrity Services
32  System Boot
33  64-bit Memory Error
34  Management Device
35  Management Device Component
36  Management Device Threshold Data
37  Memory Channel
38  IPMI Device
39  Power Supply

    
[3]strace命令排除Linux服务器故障详解
    来源: 互联网  发布时间: 2013-12-24

strace是一个有用的小工具 – 大多数Linux系统默认已经安装 – 可以通过跟踪系统调用来让你知道一个程序在后台所做的事情。Strace是一个基础的调试工具;但是即便你不是在跟踪一个问题时它也是一个极好的软件。它能告诉你很多关于一个Linux程序怎样工作的信息。

一个系统调用就是一个从应用程序到内核的消息。现代计算机系统中的用户程序都是运行在一个沙箱里面:它们不允许直接与计算机交互(因此你不能像以前那样往寄存器里面塞一些数据来完成某些工作)。

取而代之的是,每当程序需要与系统交互时,他就发送一个请求(系统调用)到内核。Strace就是用来跟踪这些消息的。因此请记住,如果你有一会儿看不到任何strace的输出,这也并不代表你的程序发生了阻塞。很有可能是程序在自己的沙箱里面做某些事情,而这些事情并不需要与系统的其它部分发生通信。

用法

Strace程序固然能做这些事情,但它总是直接将所有的东西输出到标准错误文件(也就是屏幕)。就像你将看到的那样,它会产生大量的输出;因此通常来说你最好用-o选项来设置一个输出文件:
 

代码示例:
strace -o outputfile.txt program


有一些编辑器(如vim)能够对strace的输出进行语法高亮显示。这意味着文件的不同部分,以及每一行的不同部分都会用不同的颜色来显示。这个功能相当有用,我强烈建议你使用一个这样的编辑器来查看strace的输出。

命令输出解释

试一试strace -o strace.out ls –l,然后用你喜欢的编辑器打开strace.out,并且启用语法高亮。

在深入探索细节之前,先来看看每一行的基本结构。Strace记录了程序所发出的每一次系统调用,并且各自显示在单独的一行中。系统调用的名字出现在每一行的起始,参数出现在括号里面,返回值则在等号后面,是一行的终结。
命令ls –l的头几行输出基本上是如下这个样子:
 

代码示例:
execve("/bin/ls", ["ls", "-l"], [/* 21 vars */])      = 0
brk(0)                                                = 0×619000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b412f2b9000
uname({sys="Linux", node="juliet.example.com", …})  = 0

第一行显示的是一个execve的系统调用,其参数如下:
1,当前可执行程序的位置 (/bin/ls)
2,一个从命令行传递过来的参数数组 (ls与-l)
3,一个指向21个环境变量的指针,也是传递给该程序的。
返回值为0,表示执行成功。这就是所有系统调用都相同的基本结构。

所有在后台的内幕
接下来的几行跟内存管理有关。Brk改变数据段的大小,而mmap用来返回一个进程可用的内存位置。(如需要更多信息,请尝试man 2 mmap。)

再下面一行是uname系统调用,用来显示系统的详细信息。Uname所返回的是一个指针,它指向存储这些信息的一个数据结构。系统调用经常会返回指针:这是一个内存引用,告诉你到哪里去寻找这些信息。如果你是一台计算机,这非常有用,但如果你是一个人就未必了;因此为了方便起见,每当 __strace__看到一个指针时,它就自动帮你进行查找,然后返回(一部分)指针指向的内容。这正是上面在uname系统调用那里所发生的事情。

如果你继续查看strace的输出,你就会看到很多access和open的调用。Access查找一个文件(如果没找到就返回-1和一个错误码),然后检查当前程序是否有访问权限。Open试图打开一个文件,如果成功的话就会将其连接到一个文件句柄(从3开始,因为0-2被用于STDIN、STDOUT 和STDERR)并返回这个句柄。然后,fstat会获取连接到该句柄的文件的有关信息,句柄通过第一个参数传递而来,就像这样(注意第二个参数是一个指针!):
 

fstat(3, {st_mode=S_IFREG|0644, st_size=53482, …}) = 0


在另一个mmap调用以后,文件将会被关闭。在ls的输出中,你会看到这个序列在库文件上面重复许多遍。而在那以后,对于每一个列出的文件还有 lstat、lgetxattr和getxattr等调用。这都是对每个文件获取信息用的。最后,每个文件都会按这种方式写到输出文件:
 

代码示例:
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, …}) = 0
write(1, "-rw——-  1 juliet juliet    10"…, 72) = 72


编号为1和2的文件句柄 (STDOUT和STDERR)将会关闭,于是一切都完成了。

总结:
这只是一个关于阅读strace输出的非常快速的介绍。要深入理解的话,最好的建议是去查看每个系统调用的手册页(man 2 <系统调用名>),并且尝试着在各种程序中使用strace跟踪输出。

在各种语言的‘Hello, World’程序上使用strace是一件非常有趣的事情。

还可以检查某个已经在运行的程序,然后用strace的-p PID选项来实时连接到其中的某一个。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3