进程管理
linux中,所有进程都是init进程的后代进程,init的进程号是1,也有进程号是0的进程
进程状态
running 运行
ready(runnable) 就绪
sleep
interruptable 用户随时可以唤醒 可打断睡眠
uninterruptable 通常在等待I/O操作,非可打断睡眠
stop 停止 不能被调度(无外力的情况下)
zombie 僵死 父进程处理后事
查看进程信息的命令
#pstree 查看进程树
#ps(process state) 快照当前与用户相关的前台进程的信息以显示
VSZ 虚拟内存集
RSS 物理内存空间 在TOP中此项是RES
STAT S sleep 可中断睡眠
R Running 运行
D 不可中断的睡眠
T 停止态
Z 僵死态
< 高优先级的进程
s 发起会话的进程
N 低优先级的进程
l 多线程的进程 MultiThread
+ 前台进程
支持BSD的风格的命令(选项不带-)
a 显示主要与终端相关的进程
x 显示主要与终端无关的进程
u 显示与用户相关的信息
以上三个选项配合起来使用
#ps aux 显示与用户相关的所有进程
-e =ax 显示所有进程信息
-f 显示进程详细信息
-ef 显示所有进程的详细信息
-j 以作业方式显示
-H 显示进程森林
-ejH 以作业方式显示详细信息和进程树
-aujf 显示进程树
-o 显示用户指定字段
#ps axo pid,tty,cmd 显示所有进程的进程号,终端,和进程名
#ps efo pid uid 显示所有进程的详细信息中进程号和用户ID
Attention
watch 周期性的显示命令执行情况
-n 指定周期,单位秒
-n 1
-n .5 0.5s
watch -n .5 `命令`
pgrep (process grep)
-U 查找与某一用户相关的进程
-G 查找与某一组相关的进程
-t 查找终端进程
-P 查找父进程为PPID的进程
pgrep pattern 显示符合pattern的进程号
pidof 查找某一正在运行进程的pid
进程通信
1.共享内存空间
2.传递信号 signal 可相互传递
#kill -l 显示信号
#man 7 singal 显示信号
signal:
1)SIGHUP 通知某个进程重读配置文件
2)SIGINT 类似ctrl+c 使进程终止
9)SIGKILL 杀死某一进程,不计后果,其结果是其子进程很成为无处可去的进程
15)SIGTERM 杀死某一进程,但给予一定时间处理必要工作
18)SIGCONT 外力唤醒进程(Stop态的进程)
19)SIGSTOP 终止
Attention:序号不仅表示其索引顺序,也同样可以通过序号引用信号
#kill -SIGHUP PID 将信号SIGHUP发送给pid为PID的进程
same as #kill -1 PID
#killall process_name 杀死所有process_name进程
#pkill -SIGNAL pattern 查找进程通过名字或者其他属性
进程优先级
动态优先级
静态优先级
进程信息中的nice值即表示优先级 -20到19对赢优先级的100到139 数值越大优先级越小
普通用户只能提高nice值也就是只能降低自己的优先级
进程创建时,nice被指定为0对应120
#nice 进程还未运行,设置初始nice值
#nice -n num 进程名
#renice 进程已启动
#renice num PID(数字)
#ps -efo nice,comm|cmd,pid 打印所有进程的nice值,进程名和进程号
作业job
1.前台作业/进程
跟用户相关,执行开始之后,结束之前始终占据命令提示符的进程
2.后台做紧/进程
执行开始后,立即释放命令提示符,无论进程结束与否
前台-->后台,ctrl+z挂起不执行了
后台-->前台,fg
3.jobs 查看后台作业列表
#fg 不带任何参数 调回jobs列表中带+号的那个作业
#fg [%]jnum jnum是作业列表每行第一个显示的数字
希望进程送到后台继续执行
1.#bg [%]jum
2.kill %num 此处的%不能省略 因为kill num 表示杀死pid为num的进程
前台发起进程,前台终端退出,则进程终止
#nohup 进程名 使进程脱离跟终端的这种从属关系,即使终端关闭,也可工作
#command & 将command直接送入后台执行,最好非交互的命令
4.top same as windows下的任务管理器 每隔5秒刷新
"1" 展开|收起 各个cpu状况信息(最少有2个cpu才可以)
k,kill某个进程
字段含义
load average num1 num2 num3
load average 平均负载,平均等待队列时间长度
num1 过去1分钟平均队列长度
num2 过去5分钟平均队列长度
num3 过去15分钟平均队列长度
#top -d(delay 延迟) num 单位秒 延迟多少秒刷新
#top -b -n 3
-b 工作在批处理模式下
-n 在批处理模式下,刷新几次结束命令
3 刷新3结束命令
转载于:https://blog.51cto.com/bloodhero/789584