-
进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。
-
系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘空间、内存对换、中断等。
-
CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。
-
负载信息:/proc/loadavg 文件包含系统负载信息。
-
系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空间的数量,以及空闲内存的数量等。
文件或目录名称 | 相关描 述 |
apm | 高级电源管理信息 |
cmdline | 这个文件给出了内核启动的命令行 |
cpu info | 中央处理器信息 |
devices | 可以用到的设备(块设备/字符设备) |
dma | 显示当前使用的 DMA 通道 |
filesystems | 核心配置的文件系统 |
ioports | 当前使用的 I/O 端口 |
interrupts | 这个文件的每一行都有一个保留的中断 |
kcore | 系统物理内存映像 |
kmsg | 核心输出的消息,被送到日志文件 |
mdstat | 这个文件包含了由 md 设备驱动程序控制的 RAID 设备信息 |
loadavg | 系统平均负载均衡 |
meminfo | 存储器使用信息,包括物理内存和交换内存 |
modules | 这个文件给出可加载内核模块的信息。lsmod 程序用这些信息显示有关模块的名称,大小,使用数目方面的信息 |
net | 网络协议状态信息 |
partitions | 系统识别的分区表 |
pci | pci 设备信息 |
scsi | scsi 设备信息 |
self | 到查看/proc 程序进程目录的符号连接 |
stat | 这个文件包含的信息有 CPU 利用率,磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间 |
swaps | 显示的是交换分区的使用情况 |
uptime | 这个文件给出自从上次系统自举以来的秒数,以及其中有多少秒处于空闲 |
version | 这个文件只有一行内容,说明正在运行的内核版本。可以用标准的编程方法进行分析获得所需的系统信息 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
[root@node6 py]
# cat cpu1.py
#!/usr/bin/python
from __future__
import
print_function
from collections
import
OrderedDict
import
pprint
def CPUinfo():
''
' Return the information
in
/proc/CPUinfo
as a dictionary
in
the following
format
:
CPU_info[
'proc0'
]={...}
CPU_info[
'proc1'
]={...}
''
'
CPUinfo=OrderedDict()
procinfo=OrderedDict()
nprocs = 0
with
open
(
'/proc/cpuinfo'
) as f:
for
line
in
f:
if
not line.strip():
# end of one processor
CPUinfo[
'proc%s'
% nprocs] = procinfo
nprocs=nprocs+1
# Reset
procinfo=OrderedDict()
else
:
if
len(line.
split
(
':'
)) == 2:
procinfo[line.
split
(
':'
)[0].strip()] = line.
split
(
':'
)[1].strip()
else
:
procinfo[line.
split
(
':'
)[0].strip()] =
''
return
CPUinfo
if
__name__==
'__main__'
:
CPUinfo = CPUinfo()
for
processor
in
CPUinfo.keys():
print(CPUinfo[processor][
'model name'
])
|
1
2
3
|
[root@node6 py]
# python cpu1.py
Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
|
1
2
3
4
|
[root@node6 py]
# chmod +x cpu1.py
[root@node6 py]
# ./cpu1.py
Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@node6 py]
# cat cpu2.py
#!/usr/bin/python
import
os
def load_stat():
loadavg = {}
f =
open
(
"/proc/loadavg"
)
con = f.
read
().
split
()
f.close()
loadavg[
'lavg_1'
]=con[0]
loadavg[
'lavg_5'
]=con[1]
loadavg[
'lavg_15'
]=con[2]
loadavg[
'nr'
]=con[3]
loadavg[
'last_pid'
]=con[4]
return
loadavg
print
"loadavg"
,load_stat()[
'lavg_15'
]
|
1
2
|
[root@node6 py]
# python cpu2.py
loadavg 0.10
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@node6 py]
# cat mem.py
#!/usr/bin/python
from __future__
import
print_function
from collections
import
OrderedDict
def meminfo():
''
' Return the information
in
/proc/meminfo
as a dictionary
''
'
meminfo=OrderedDict()
with
open
(
'/proc/meminfo'
) as f:
for
line
in
f:
meminfo[line.
split
(
':'
)[0]] = line.
split
(
':'
)[1].strip()
return
meminfo
if
__name__==
'__main__'
:
#print(meminfo())
meminfo = meminfo()
print(
'Total memory: {0}'
.
format
(meminfo[
'MemTotal'
]))
print(
'Free memory: {0}'
.
format
(meminfo[
'MemFree'
]))
|
1
2
3
|
[root@node6 py]
# python mem.py
Total memory: 236380 kB
Free memory: 84404 kB
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
[root@node6 py]
# cat net.py
#!/usr/bin/python
import
time
import
sys
if
len(sys.argv) > 1:
INTERFACE = sys.argv[1]
else
:
INTERFACE =
'eth0'
STATS = []
print
'Interface:'
,INTERFACE
def rx():
ifstat =
open
(
'/proc/net/dev'
).readlines()
for
interface
in
ifstat:
if
INTERFACE
in
interface:
stat = float(interface.
split
()[1])
STATS[0:] = [stat]
def tx():
ifstat =
open
(
'/proc/net/dev'
).readlines()
for
interface
in
ifstat:
if
INTERFACE
in
interface:
stat = float(interface.
split
()[9])
STATS[1:] = [stat]
print
'In Out'
rx()
tx()
while
True:
time
.
sleep
(1)
rxstat_o = list(STATS)
rx()
tx()
RX = float(STATS[0])
RX_O = rxstat_o[0]
TX = float(STATS[1])
TX_O = rxstat_o[1]
RX_RATE = round((RX - RX_O)
/1024/1024
,3)
TX_RATE = round((TX - TX_O)
/1024/1024
,3)
print RX_RATE ,
'MB '
,TX_RATE ,
'MB'
|
1
2
3
4
5
6
7
8
9
10
|
[root@node6 py]
# python net.py
Interface: eth0
In Out
0.3 MB 0.1 MB
0.4 MB 0.2 MB
0.2 MB 0.1 MB
0.6 MB 0.3 MB
0.5 MB 0.2 MB
0.9 MB 0.5 MB
0.7 MB 0.3 MB
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@node6 py]
# cat apache.py
#!/usr/bin/python
import
os, sys,
time
while
True:
time
.
sleep
(4)
try:
ret = os.popen(
'ps -C apache -o pid,cmd'
).readlines()
if
len(ret) < 2:
print
"apache 进程异常退出, 4 秒后重新启动"
time
.
sleep
(3)
os.system(
"service apache2 restart"
)
except:
print
"Error"
, sys.exc_info()[1]
|