Linux 下的进程状态:
首先查看进程状态的命令PS
PS的用法:ps - parameter
常用参数:
-A 显示所有的进程(等价于-e)
-a 显示一个终端的所有进程
c 显示进程的真实名称
-e 等价于-A
-N 忽略选择
-d 显示所有进程,但是省略所有的会话引线
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx 不可合用
-p pid进程使用cpu时间
-u uid or username选择有效的用户id或者用户名
-g gid or groupname 显示组的所有进程
U username显示该用户下的所有进程,且显示各个命令的线下路径ps U zhangsan
-f 全部列出,通常和显示选项联用。ps -fa or ps -fx
-m 显示所有的线程
-H 显示进程的层次 ps -Ha
ps -aux输出格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER
USER 进程拥有者
PID 进程pid
%CPU 占用cpu的使用率
%MEM 占用内存大小
VSZ 占用虚拟内存大小
RSS 占用物理内存
TTY linux的终端号pts/1
STAT 运行的状态:
D:不可中断终端的休眠状态(IO进程)
R:正在运行,在可中断队列中
S:处于休眠状态,静止状态
T:停止或被跟踪,暂停执行
W:进入内存交换
X:杀死的进程
Z:僵死进程不存在但暂时无法消除
s:进程的领导者(在它之下有子进程)
l:多进程的(CLONE_THREAD,类似NPTL pthreads)
+:位于后台的进程组
Kill终止进程有十几种控制进程的方法
kill -STOP [pid]发送SIGSTOP(17,19,23)停止一个进程,而不消灭这个进程
kill -CONT [pid] 发送SIGCONT(19,18,25)重新开始一个停止进程
kill -KILL [pid] 发送SIGKILL(9)强迫进程立即停止,不实施清理操作
kill -9 -1 终止你拥有的全部进程
SIGKILL和SIGSTOP信号不能被,封锁或者忽略,但是,其他信号可以
bash下Ctr-C,Ctr-D,Ctr-Z的区别
Ctr-C To terminate 终止进程,发送SIGINT信号
Ctr-D signals EOF 文件结束符发送SIGTSTP信号
Ctr-Z suppends a program 暂停一个进程
测试程序
<?php
while(true) {
echo "Hello\n";
sleep(1);
}
?>
Ctr-D没有效果
Ctr-Z显示如下:
[1]+ Stopped /home/work/lamp/php5/bin/php while.php
此时这个进程只是被暂停掉了,并没有kill掉
而使用Ctr-C这个进程就是被kill掉了
对于Ctr-D的作用不是发送信号,而是表示一个特殊的二进制值,表示EOF
对于暂停了的进程如何恢复执行:
jobs命令把暂停的进程显示出来
fg %jobnumber 将后台的任务拿到前台来处理
bg %jobnumber 将任务放到后台去处理
kill 管理后台的任务