5.1、进程监视命令ps:
ps命令支持两种格式标准
X/Open标准:
ps [-Aaedfklm][-F format][-o specifier[=header],…][-p proclist][-G|-g grouplist][-t termlist][-U|-u userlist]
伯克利(Berkley)标准:
ps [a][c][e][ew][eww][g][n][U][w][x][l|s|u|v][t Tty][ProcessNumber]
一般X/Open标准使用比较广泛,以下只针对该标准进行说明:
-A 表示显示系统中所有的进程,包括进程组组长(process group leader)和核心进程
-a 表示显示系统中所有的进程,除了进程组组长和没有相关终端的进程
-d 表示显示系统中所有的进程,除了进程组组长,但包括核心进程
-e 表示显示系统中所有的进程,除了核心进程
-f 表示 显示进程的详细信息
-G grouplist 显示grouplist列表中包含的所有进程组中的进程
-g 同-G grouplist
-k 显示核心进程
-l 以长格式显示进程信息,输出的内容比-f参数输出的内容多
-m 显示进程中的线程信息
-o format 按format 指定的格式显示进程信息
-P Plist显示由Plist指定进程号的进程信息
-t TList 显示由Tlist指定终端上的进程信息
-U Ulist 显示由Ulist指定用户名或用户标识号的进程信息
-u Ulist 同-U Ulist
进程组组长:每个进程除了记录它自己的进程号(PID)外还记录了它的父进程号(PPID)、它所属进程组的ID(PGID),进程组是由一个或
好几个进程所组成的集合,进程组组长的PID与进程组的ID相同,因此PGID也就是进程组组长,当一个进程的进程组ID与它的进程ID相同时,
这个进程就称为进程组组长。
ps -o “%p %P %r %a” -A 表示显示所有的进程的进程号、父进程号、进程组号和产生的进程
ps 表示只显示用户登陆的终端的进程状态
如果让一个进程在后台运行,我们可以在后面加一个"&"符号
僵尸进程:当一个子进程死亡后,在父进程清除它之前,这个子进程就成了一个僵尸进程,它的尸体还保留在进程表中(就是说它仍然有进
程号),直到父进程调用wait()后才能将它从进程表清除掉,这种尸体还保留在进程表中的进程就称为僵尸进程。当一个子进程先于父进程
死亡而父进程又没有调用wait()来清除时,就会产生僵尸进程,一般标记为defunct符号。僵尸进程会影响系统的效率。
ps -kl 表示显示核心进程
deamon进程(守侯进程):是一个永不停止的进程,它处于后台运行并且大多时间处于空闲状态。
ps -elm 表示显示线程信息
执行shell脚本test.sh的三种方式:
ksh test.sh
.test.sh
当执行某一shell脚本在后台运行,并且该用户退出时不能中断,则需要用nohup命令
nohup ksh test.sh &
5.2、杀死进程命令:
kill [-s {signalname|signalnumber}] processid…
kill [- signalname|- signalnumber ] processid…
processid 表示接收信号的进程的ID号
signalname 表示信号名
signalnumber 信号的代号
如果不指定signalname和signalnumber就表示发送sigterm信号(即终止信号)
kill 2098 表示终止进程号为2098的进程,即向2098进程发送了一个终止信号
kill -9 2098 8090 /kill -kill 2098 8090 表示向2098 和8090进程发送sigkill信号
kill -9 0 表示终止创建的所有进程,退出系统并返回到login状态下
kill -9 -1 表示杀死所有创建的进程,但不退出系统
kill -l 表示显示kill命令所支持的信号名
kill -l 9 表示显示对应整数的信号名
killall [-][-signal] 表示杀死某一用户启动的所有进程
- 表示先发送一sigterm信号再发送sigkill信号,收到sigterm信号后的所有进程有30秒的处理后事的时间,即收到sigterm信号后,
有一个清理的机会。
[-][-signal] 表示先发送一个signal信号(可以是signalname也可以是signalnumber),然后再发送sigkill信号,同样,在收到
第一个信号时也有30秒的处理时间。
killall 表示杀死某一用户所有启动的后台进程,即发送一个信号9
killall - 表示杀死某一用户所有启动的后台进程并提供一个结束前的清理资源的机会
5.3、proc系列命令:
procwdx 5381 显示进程5381的当前工作目录
procfiles -n 5381 显示由进程5381打开的所有文件的描述符信息
procflags 5381 显示进程5381 的跟踪标记,包括已经实施和未实施的信号
proccred 5381 显示进程所属的有效的、真实的、保留的用户ID和组ID
procmap 5381 显示进程的地址空间映射关系
procldd 5381 显示动态加载程序列表,包括共享对象
procsig 5381 显示进程在收到信号之后所采取的动作
procstack 5381 显示进程中当前线程的每一个堆栈结构的十六进制地址和符号名
procstop 5381/用户ID 表示使用pr_requested事件的/proc接口来停止进程运行
procrun 5381 表示启动由procstop命令停止的进程
procwait 5381 表示等待所有指定的进程停止运行,如果带-v参数,则显示指定进程的详细信息
proctree 5381/ 表示显示包含指定进程的PID或用户的进程树、
当进程异常终止运行时,系统会把该进程对应的地址空间中的数据写到core文件中,这个过程称为dump。