AI智能
改变未来

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

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

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

第四章 更多的bash shell命令

监测程序

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

ps

命令的用法。

$ ps


Linux系统中使用的GNU ps命令支持3种不同类型的命令行参数:
Unix风格的参数,前面加单破折线;
BSD风格的参数,前面不加破折线;
GNU风格的长参数,前面加双破折线;


举个例子,如果你想查看系统上运行的所有进程,可用**-ef**参数组合。

$ ps -efUID		PID		PPID	C	STIME	TTY		TIME		CMDroot 	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 	haldroot 	3078 	1981 	0 	12:00 	? 		00:00:00 	sshd: rich [priv]rich 	3080 	3078 	0 	12:00 	? 		00:00:00 	sshd: rich@pts/0rich 	3081 	3080 	0 	12:00 	pts/0 	00:00:00 	-bashrich 	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 -lF 	S 	UID 	PID 	PPID 	C 	PRI 	NI 	ADDR 	SZ 		WCHAN 	TTY 	TIME 		CMD0 	S 	500 	3081 	3080 	0 	80 		0 	- 		1173 	wait 	pts/0 	00:00:00 	bash0 	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:进程休眠的内核函数的地址。


在使用BSD参数时,ps命令会自动改变输出以模仿BSD格式。下例是使用l参数的输出:

$ ps lF 	UID 	PID 	PPID 	PRI 	NI 	VSZ 	RSS 	WCHAN 	STAT 	TTY 	TIME 	COMMAND0 	500 	3081 	3080 	20 		0 	4692 	1432 	wait 	Ss 		pts/0 	0:00 	-bash0 	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:该进程是多线程的。
+:该进程运行在前台。


可以将GNU长参数和Unix或BSD风格的参数混用来定制输出。GNU长参数中的**–forest**参数会显示进程的层级信息,并用ASCII字符绘出图表,这种格式让跟踪子进程和父进程变得十分容易。

ps命令只能显示某个特定时间点的进程信息。

top

命令跟ps命令相似,能够显示进程信息,但它是实时显示的。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Linux命令行与shell脚本编程大全 第3版(笔记 – 第四章)