Linux进程管理
参考网址
http://blog.csdn.net/songhaixing2/article/details/111086988
一/进程介绍
1.进程
程序: 就是磁盘上存放代码的文件(静态概念)。
如果这样说的话,一个.sh文件就是一个程序,.py文件也是一个程序
进程: 程序运行的过程,一旦程序被操作系统从磁盘加载进内存开始运行了,这个时候程序就成为了进程。(动态概念)。
如果这样说的话,.sh文件运行的时候就是一个进程。
一个程序中可能对应多个进程
父进程: 程序运行时产生的第一个进程
子进程: 由父进程衍生出来的进程(比如在bash里再开一个bash),
如果父进程终止,子进程也会随之终止
进程是操作系统最核心的概念、
2.PID和PPID
1、PID(process ID):
PID是程序被操作系统从磁盘加载到内存成为进程后动态分配的资源。
每次程序执行的时候,操作系统都会重新加载,PID在每次加载的时候都是不同的。
2、PPID(parent process ID):PPID是程序的父进程号。
3、PID和PPID都是非零的整数。
4、PID是唯一的,一个PID只标识一个进程。不可能同时存在2个一样的pid进程。
5、一个进程创建的另一个新进程称为子进程。相反地,创建子进程的进程称为父进程。
比如a进程创建了b进程,则a就是b的父进程,b就是a的子进程
6、对于一个普通的用户进程,它的父进程就是执行它的那个Shell,对于Linux而言,Shell就是bash。
一旦父进程挂了,则子进程也挂了
7、bash所在的目录:[[email protected] bin]$ cd /bin | ls bash
8 特别说明:
1、所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫init进程
2、init进程是linux内核启动后第一个执行的进程。
3、init引导系统,启动守护进程并且运行必要的程序。
2.并发和并行
并发: 多个任务看起来是同时运行的。
比如一个人在吃饭,吃了牛肉,蔬菜,鱼肉,看起来是同时进行的,但还是有先后顺序的。
并行: 多个任务真正的同时运行(只有多核再能实现并行)
3.线程
线程是进程内代码执行的过程
线程才是CPU上的执行单位
一个进程至少有一个线程
强调:CPU只做代码的运行,而不涉及I/O操作
4.任务三种状态
运行态
就绪态
阻塞态
不是阻塞态就是非阻塞态
5.提交任务的两种方式
同步:同步是指发送方发送数据后, 等接收方发回响应后才发下一个数据报的通讯方式。
异步:异步是指发送方发出数据后, 不等接收方发回响应, 接着就发下个数据包的通讯方式。
例子:
快递小哥给你送快递,如果他打电话叫你过来拿,他在那里等你,等你从他手上把快递拿走了他才去送别人的快递,这个就称之为同步。
快递小哥把你快递放在丰巢柜或者驿站,然后打个打电话或者发个信息告诉你快递到了让你自己去拿,然后小哥去干别的事了,这个就是异步(效率更高一点)。
二/进程信息的查看
1.ps -aux 组合命令,查看进程信息
-a参数:显示该终端的所有进程,all
-u参数:显示有效的用户id或者用户名 user
-x参数:显示没有控制终端的进程,同时显示各个进程的具体路径
2.命令显示结果
3.首行信息代表含义
USER参数:运行该进程的用户
PID参数:进程的id
STAT参数: 该进程现在的状态
START参数:该进程的启动时间(是用户在什么时候启动的)
TIME参数:该进程占用cpu的总时间(0表示还没有超过1秒钟)
COMMAND参数:程序运行指令,有[]代表内核态进程,没有[]代表用户态进程。
D状态与Z状态的进程都无法使用 kill -9 杀死
4.ps -efl 查看命令
-e参数:显示所有的进程
-f参数:全格式,full
-l参数: 长格式,long
三种查看效果对比(PPID代表当前进程的父进程)
6.查看进程树
pstree,这个命令,可以把父进程和对应的子进程看得特别清楚。
7.动态查看用法top
top命令是动态查看进程的命令,因为进程的状态是时刻在变化的,
如果你使用ps命令的话,那是一个切片的状态,你需要再次执行ps命令,才能知道当前的状态。
-u参数:查看指定用户的进程
-p参数:指定某个进程id
-d参数:制定刷新时间(单位秒,因为是动态查看,所以需要有刷新时间)
下面是用了-u -p -d参数的2个例子:
根据上面这个截图,我们就需要知道top命令的返回结果中,各个字段的意思:
8.进程信号
kill -l 列出当前系统支持的信号
上面列出的信号太多了,我们平时常用的信号有以下几个:
编号 含义 作用
1 SIGHUP 不用重启进程直接重新加载配置文件
9 SIGKILL 强制杀死进程(D,Z杀不死)
15 SIGTERM 终止进程, kill默认就是这个信号
18 SIGCONT 让被停止的进程恢复运行
19 SIGSTOP 暂停进程
下面是一个例子:
「其他文章」
- 机器学习:sklearn中xgboost模块的XGBRegressor函数(回归)
- 机器学习:xgboost原生库接口(陈天奇) && xgboost的sklearn接口
- Linux进程管理
- go:连接redis
- go:自定义类型,结构体struct
- go:go mod tidy的作用
- python:判定文件、目录是否存在,以及创建(多层)目录
- python:multiprosessing模块的Pool()类的apply()函数和apply_async()函数的区别
- python:ThreadPoolExecutor线程池和ProcessPoolExecutor进程池
- 时间序列:ARMA
- kafka:介绍
- 机器学习:损失函数(loss function)
- 机器学习:adaboost(回归实战)
- pyenv
- pyspark:集群环境实战
- spark:local模式环境-搭建和使用
- spark:standalone(独立集群环境)--搭建和使用
- spark:yarn集群环境-搭建和使用
- AB测试 - 假设检验的两类错误
- python:多进程的几种实现方式