Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)

Linux命令行与shell脚本编程大全 第3版

  • 第四章 更多的bash shell命令
    • 监测程序

第四章 更多的bash shell命令

监测程序

当程序运行在系统上时,我们称之为进程(process)。想监测这些进程,需要熟悉ps命令的用法。

$ ps

在这里插入图片描述
Linux系统中使用的GNU ps命令支持3种不同类型的命令行参数:
Unix风格的参数,前面加单破折线;
BSD风格的参数,前面不加破折线;
GNU风格的长参数,前面加双破折线;
Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)_第1张图片
Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)_第2张图片
举个例子,如果你想查看系统上运行的所有进程,可用**-ef**参数组合。

$ ps -ef
UID		PID		PPID	C	STIME	TTY		TIME		CMD
root 	1 		0 		0 	11:29 	? 		00:00:01 	init [5]
root 	2 		0 		0 	11:29 	? 		00:00:00 	[kthreadd]
root 	3 		2 		0 	11:29 	? 		00:00:00 	[migration/0]
root 	4 		2 		0 	11:29 	? 		00:00:00 	[ksoftirqd/0]
root 	5 		2 		0 	11:29 	? 		00:00:00 	[watchdog/0]
root 	6 		2 		0 	11:29 	? 		00:00:00 	[events/0]
root 	7 		2 		0 	11:29 	?	 	00:00:00 	[khelper]
root 	47 		2 		0 	11:29 	? 		00:00:00 	[kblockd/0]
root 	48 		2 		0 	11:29 	? 		00:00:00 	[kacpid]
68 		2349 	1 		0 	11:30 	? 		00:00:00 	hald
root 	3078 	1981 	0 	12:00 	? 		00:00:00 	sshd: rich [priv]
rich 	3080 	3078 	0 	12:00 	? 		00:00:00 	sshd: rich@pts/0
rich 	3081 	3080 	0 	12:00 	pts/0 	00:00:00 	-bash
rich 	4445 	3081 	3 	13:48 	pts/0 	00:00:00 	ps -ef
$

UID:启动这些进程的用户。
PID:进程的进程ID。
PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
C:进程生命周期中的CPU利用率。
STIME:进程启动时的系统时间。
TTY:进程启动时的终端设备。
TIME:运行进程需要的累计CPU时间。
CMD:启动的程序名称。

如果想要获得更多的信息,可采用**-l**参数,它会产生一个长格式输出。

$ ps -l
F 	S 	UID 	PID 	PPID 	C 	PRI 	NI 	ADDR 	SZ 		WCHAN 	TTY 	TIME 		CMD
0 	S 	500 	3081 	3080 	0 	80 		0 	- 		1173 	wait 	pts/0 	00:00:00 	bash
0 	R 	500 	4463 	3081 	1	80 		0 	- 		1116 	- 		pts/0 	00:00:00 	ps
$

F:内核分配给进程的系统标记。
S:进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止)。
PRI:进程的优先级(越大的数字代表越低的优先级)。
NI:谦让度值用来参与决定优先级。
ADDR:进程的内存地址。
SZ:假如进程被换出,所需交换空间的大致大小。
WCHAN:进程休眠的内核函数的地址。
Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)_第3张图片
Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)_第4张图片
在使用BSD参数时,ps命令会自动改变输出以模仿BSD格式。下例是使用l参数的输出:

$ ps l
F 	UID 	PID 	PPID 	PRI 	NI 	VSZ 	RSS 	WCHAN 	STAT 	TTY 	TIME 	COMMAND
0 	500 	3081 	3080 	20 		0 	4692 	1432 	wait 	Ss 		pts/0 	0:00 	-bash
0 	500 	5104 	3081 	20 		0 	4468 	844 	- 		R+ 		pts/0 	0:00 	ps l
$

VSZ:进程在内存中的大小,以千字节(KB)为单位。
RSS:进程在未换出时占用的物理内存。
STAT:代表当前进程状态的双字符状态码。
BSD风格的l参数能输出更详细的进程状态码(STAT列)。第一个字符采用了和Unix风格S列相同的值,表明进程是在休眠、运行还是等待。第二个参数进一步说明进程的状态。
<:该进程运行在高优先级上。
N:该进程运行在低优先级上。
L:该进程有页面锁定在内存中。
s:该进程是控制进程。
l:该进程是多线程的。
+:该进程运行在前台。
Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)_第5张图片
Linux命令行与shell脚本编程大全 第3版(笔记 - 第四章)_第6张图片
可以将GNU长参数和Unix或BSD风格的参数混用来定制输出。GNU长参数中的**–forest**参数会显示进程的层级信息,并用ASCII字符绘出图表,这种格式让跟踪子进程和父进程变得十分容易。
在这里插入图片描述
ps命令只能显示某个特定时间点的进程信息。top命令跟ps命令相似,能够显示进程信息,但它是实时显示的。

你可能感兴趣的:(第3版,(笔记))