程序与进程:
程序是静态的(文件),进程是动态的(运行的程序)
进程和线程:
一个程序至少有一个进程,一个进程至少有一个线程
进程之间的内存是独立的
线程之间的内存是共享(共享的优点并发连接高,缺点安全性差)
查看进程树:
Pstree 树形结构显示系统进程信息
[[emailprotected] ~]# pstree
init─┬─auditd───{auditd}
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─dbus-daemon───{dbus-daemon}
├─dhclient
├─login───bash
├─master─┬─pickup
│ └─qmgr
├─5*[mingetty]
├─rhsmcertd
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd─┬─bash───pstree
│ └─sftp-server
└─udevd
-P 显示进程号
[[emailprotected] ~]# pstree -p
init(1)─┬─auditd(1113)───{auditd}(1114)
├─console-kit-dae(1308)─┬─{console-kit-da}(1309)
│ ├─{console-kit-da}(1310)
│ ├─{console-kit-da}(1311)
│ ├─{console-kit-da}(1312)
│ ├─{console-kit-da}(1313)
│ ├─{console-kit-da}(1314)
│ ├─{console-kit-da}(1315)
│ ├─{console-kit-da}(1316)
│ ├─{console-kit-da}(1317)
│ ├─{console-kit-da}(1318)
│ ├─{console-kit-da}(1319)
│ ├─{console-kit-da}(1320)
│ ├─{console-kit-da}(1321)
│ ├─{console-kit-da}(1322)
│ ├─{console-kit-da}(1323)
│ ├─{console-kit-da}(1324)
│ ├─{console-kit-da}(1325)
│ ├─{console-kit-da}(1326)
│ ├─{console-kit-da}(1327)
│ ├─{console-kit-da}(1328)
│ ├─{console-kit-da}(1329)
│ ├─{console-kit-da}(1330)
│ ├─{console-kit-da}(1331)
│ ├─{console-kit-da}(1332)
│ ├─{console-kit-da}(1333)
│ ├─{console-kit-da}(1334)
│ ├─{console-kit-da}(1335)
│ ├─{console-kit-da}(1336)
│ ├─{console-kit-da}(1337)
│ ├─{console-kit-da}(1338)
│ ├─{console-kit-da}(1339)
│ ├─{console-kit-da}(1340)
│ ├─{console-kit-da}(1341)
│ ├─{console-kit-da}(1342)
│ ├─{console-kit-da}(1343)
│ ├─{console-kit-da}(1344)
│ ├─{console-kit-da}(1345)
│ ├─{console-kit-da}(1346)
│ ├─{console-kit-da}(1347)
│ ├─{console-kit-da}(1348)
│ ├─{console-kit-da}(1349)
│ ├─{console-kit-da}(1350)
│ ├─{console-kit-da}(1351)
│ ├─{console-kit-da}(1352)
│ ├─{console-kit-da}(1353)
│ ├─{console-kit-da}(1354)
│ ├─{console-kit-da}(1355)
│ ├─{console-kit-da}(1356)
│ ├─{console-kit-da}(1357)
│ ├─{console-kit-da}(1358)
│ ├─{console-kit-da}(1359)
│ ├─{console-kit-da}(1360)
│ ├─{console-kit-da}(1361)
│ ├─{console-kit-da}(1362)
│ ├─{console-kit-da}(1363)
│ ├─{console-kit-da}(1364)
│ ├─{console-kit-da}(1365)
│ ├─{console-kit-da}(1366)
│ ├─{console-kit-da}(1367)
│ ├─{console-kit-da}(1368)
│ ├─{console-kit-da}(1369)
│ ├─{console-kit-da}(1370)
│ └─{console-kit-da}(1372)
├─crond(1260)
├─dbus-daemon(1141)───{dbus-daemon}(1143)
├─dhclient(1064)
├─login(1287)───bash(1375)
├─master(1250)─┬─pickup(1998)
│ └─qmgr(1259)
├─mingetty(1289)
├─mingetty(1291)
├─mingetty(1293)
├─mingetty(1295)
├─mingetty(1297)
├─rhsmcertd(1273)
├─rsyslogd(1129)─┬─{rsyslogd}(1130)
│ ├─{rsyslogd}(1132)
│ └─{rsyslogd}(1133)
├─sshd(1174)───sshd(1388)─┬─bash(1392)───pstree(2307)
│ └─sftp-server(1426)
└─udevd(457)
显示目录树形结构
安装tree命令
[[emailprotected] ~]# tree /wang/
/wang/
└── zhang
└── wang.txt
列出目前所有的正在内存中运行的进程
PS
[[emailprotected] ~]# ps –aux(A代表全部,U代表命令,X代表用户)
Warning: bad syntax, perhaps a bogus -? See /usr/share/doc/procps-3.2.8/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19228 1520 ? Ss Jun29 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S Jun29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jun29 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S Jun29 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S Jun29 0:00 [migration/0]
USER:运行此process的用户
PID:该process的进程码
%CPU:该process使用掉的CPU资源百分比
%MEM:该process所占用的物理内存百分比
VSZ: 该process所使用掉的虚拟内存量(Kbytes)
RSS: 该process所占用的固定的内存量(Kbytes)
TTY:该process是在那个终端机上面运作,若与终端机无关,则显示“?”,另外,tty1-tty6是本机上面的登陆者程序,若为pts/0等等的,则表示为由网络连接主机的程序。
STAT:该程序目前的状态,linux进程有5种基本状态
R:(正在运行或在运行队列中等待)
S:该进程目前正在睡眠当中,但可被某些讯号(signal)唤醒
T: 该进程目前暂停了
例如: 编辑vi a.txt时 按下ctrl+z
ps –aux |grep vi
Ctrl-c 是发送sigint信号,终止一个进程
Ctrl-z 是发送sigstop信号,挂起一个进程
Z:该程序应该已经终止,但是其父程序却无法正常终止它,造成zombie(僵尸)进程
D:不可中断状态
< 高优先级的
N 低优先级的
S 包含子进程
l 多线程
+ 前台程序
START:该process被触发启动时间
TIME:该process实际使用cpu运作的时间
COMMAND:该程序的实际指令
PS aux 使用BSD的格式来显示进程
Ps ef 是使用标准的格式显示进行
TOP 动态查看进程
统计新区前五行是系统整体的统计信息
1. 第一行是任务队列信息
和uptime命令的执行结果一样:
例:
[[emailprotected] ~]# top
top - 09:35:06 up 7 min, 3 users, load average: 0.44, 0.93, 0.57
Tasks: 348 total, 2 running, 346 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem: 1878184 total, 1155664 used, 722520 free, 1584 buffers
KiB Swap: 2097148 total, 0 used, 2097148 free. 531364 cached Mem
[[emailprotected] ~]# uptime
09:36:42 up 9 min, 3 users, load average: 0.15, 0.68, 0.51
09:36:42
系统的当前时间
up 9 min
系统运行时间,格式为时、分
3 users
当前登陆用户
load average: 0.15, 0.68, 0.51
系统负载,即任务队列的平均长度。三个数值分别为1分钟、五分钟、15分钟前到现在的平均值
一般来说,每个CPU内核当前活动进程数不大于3,则表示运行表现良好!当然这里说的是每个CPU内核,也就是如果你的主机是四核cpu的话,那么只要Uptime最后输出的一串字符数值小于4*3=12即表示系统负载不是很严重
2. 第二、第三行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行,内容如下
Tasks:348 total
进程总数
2 running
正在运行的进程数
346 sleeping
睡眠的进程数
0 stopped
停止的进程数
0 zombie
僵尸进程数
Cpu(s):0.7 us
系统用户进程使用cpu百分比。不包括调高优先级的进程。PU%是由每个核的CPU占用率之和算出来的。如果你是4核CPU,核1 ,CPU使用率为100%,核2,CPU使用率100%,则会出现CPU高于100%的现象,最终为200%
0.3 sy
内核空间占用CPU百分比
0.0 ni
用户进程空间内改变过优先级的进程占用CPU百分比
98.7 id
空闲CPU百分比
3. 第四五行为内存的信息
内容如下:
KiB Mem: 1878184 total
物理内存总量
1155664 used
使用的物理内存总量
722520 free
空闲内存总量
1584 buffers
用做内核缓存的内存量和free –K 一个意思
Swap: 2097148 total,
交换分区的总容量
0 used
使用的交换分区的总量
2097148 free
空闲的交换分区的总量
531364 cached Mem
缓冲的交换区总量。内存中的内容被换到交换区,而后又被换入内存,但使用过的交换去尚未被覆盖,该数值即为那些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入
和free –k 中cache一样
二、进程
列名
含义
PID
进程id
User
进程所有者的用户名
NI
进程优先级。Nice值,负值表示高优先级,正值表示低优先级
Res
实际使用的内存大小
S
进程状态
%CPU
上次更新到现在的CPU时间占用百分比
%MEM
进程使用的物理内存百分比
TIME+
进程使用CPU时间总计,单位1/100秒
Command
命令名/命令行
Top快捷键
默认3s刷新一下,按空格可以立即刷新
M按内存排序
P按CPU排序
展开阅读全文