linux进程管理

1.进程基本概述

进程是已启动的可执行程序的运行中实例。

/proc目录下以数字为名的目录,每一个目录代表一个进程,保存着进程的属性信息。每一个进程的PID是唯一的,就算进程退出了,其它进程也不会占用其PID

2.进程的组成部分

1.已分配内存的地址空间
2.安全属性,包括所有权凭据和特权
3.程序代码的一个或多个执行线程
4.进程状态

3.进程的环境

本地和全局变量
当前调度上下文
分配的系统资源,如文件描述符和网络端口

4.进程状态

标志 内核定义的状态名称和描述
R TASK_RUNNING:进程正在CPU上执行,或者正在等待运行。处于运行中(或可运行)状态时,进程可能正在执行用户例程或内核例程(系统调用),或者已排队并就绪
S TASK_INTERRUPTIBLE:进程处于睡眠状态且正在等待某一条件:硬件请求、系统资源访问或信号。当事件或信号满足该条件时,该进程将返回到运行中
D TASK_UNINTERRUPTIBLE:此进程也在睡眠,但与S状态不同,不会响应传递的信号。仅在特定的条件下使用,其中进程中断可能会导致意外的设备状态
K TASK_KILLABLE:进程处于睡眠状态,与不可中断的D状态相同,但有所修改,允许等待中的任务通过响应信号而被中断(彻底退出)。实用程序通常将可中断的进程显示为D状态
T TASK_STOPPED:进程已被停止(暂停),通常是通过用户或其他进程发出的信号。进程可以通过另一信号返回到运行中状态,继续执行(恢复)
T TASK_TRACED:正在被调试的进程也会临时停止,并且共享同一个T状态标志
Z EXIT_ZOMBIE:子进程在退出时向父进程发出信号。除进程身份(PID)之外的所有资源都已释放
X EXIT_DEAD:当父进程清理(获取)剩余的子进程结构时,进程现在已彻底释放。此状态从不会在进程列出实用程序中看到
< 高优先级进程
N 低优先级进程
+ 前台进程组中的进程
l 多线程进程
s 会话进程首进程

5.进程优先级

<0-139>:数字越小,优先级越高!
<0-99>:实时优先级,内核调整
<100-139>:静态优先级,用户可控制

6.进程管理命令

ps:
linux进程管理
linux进程管理
linux进程管理

7.vmstat

虚拟内存状态查看命令

vmstat 1000 //表示每1000秒刷新一次
vmstat 1000 5 //表示每1000秒刷新一次,刷新5次后退出
linux进程管理

8.后台运行作业

//在命令后跟上&符号可以生成一个后台作业
[[email protected] ~]# sleep 1000 &
[1] 1400

//jobs命令用于显示当前所有的后台作业
[[email protected] ~]# jobs
[1]+ Running sleep 1000 &

//fg命令用于将后台作业调至前台运行
[[email protected] ~]# fg
//当只有一个后台作业时,直接使用fg命令,不跟任何参数即可将后台作业调至前台运行,但是当有多个作业时则必须跟上%+作业号,也就是上面命令执行结果中以[]括起来的数字。
[[email protected] ~]# jobs
[1]- Running sleep 1000 &
[2]+ Running sleep 500 &
[[email protected] ~]# fg %1

//使用ctrl+z可将前台进程发送到后台,此时作业将处于停止状态
[[email protected] ~]# fg %1
sleep 1000
^Z
[1]+ Stopped sleep 1000

//使用bg命令+作业号可使后台已停止的作业重新运行
[[email protected] ~]# bg %1
[1]+ sleep 1000 &
[[email protected] ~]# jobs
[1]- Running sleep 1000 &
[2]+ Running sleep 500 &

//kill加上作业号可以手动杀死指定作业
[[email protected] ~]# jobs
[1]- Running sleep 1000 &
[2]+ Running sleep 500 &
[[email protected] ~]# kill %1
[1]- Terminated sleep 1000
[[email protected] ~]# jobs
[2]+ Running sleep 500 &

//jobs命令的结果中
+ //命令将默认操作的作业
- //命令将第二个默认操作的作业