触发任何一个事件,系统都会将它定义为一个进程,并予以一个ID,既PID。

1 程序与进程

程序(program):通常为二进制,放置在存储媒介中(如 硬盘 光盘等),以物理文件的形式存在

进程(process):程序被触发后,执行者的权限和属性、程序的代码与所需数据都会被加载到内寸中,操作系统给与其一个标识符(PID)。进程就是正在运行中的程序。

父子进程:进程之间是有相关性的,他们之间的关系用PPID(parent PID)来判断。
image.png
比如npm 启动一个egg项目,开发模式下又生成3个进程,父子关系就一目了然
image.png

linux的程序调用通常称为 fork-and-exec的流程,先有父进程已复制(fork)的方式产生一个一模一样的子进程,然后子进程再以exec的方式执行实际要执行的进程。最终称为一个子进程。

2 系统或网络服务

既常驻在内存的进程,称之为服务(daemon)。
有些进程,如ls,执行完就结束了。
有些进程,如crond,系统本身所需要的服务,还有apache/httpd等专门用于网络连接的服务,是常驻在内存中的。一般这类进程都会在文件名后带上d。

3 进程管理

3.1 查看进程

ps ——查看某一时间点的进程
ps -[Aauxljf]
ps aux 查看系统所有进程 / ps -l 仅查看自己的bash相关进程
image.png
top——动态查看进程的变化
top [-d数字] | top [-bnp]
image.png
pstree ——查看进程之间的关系
image.png

3.2 进程的管理

进程之间可以互相控制,可以通过发送一个信号(signal)去告知进程去做什么。
kill -l 查看所有信号
image.png
常用的有
1 启动被终止的进程,类似重新启动
9 强制终止一个进程的执行
15 以正常的方式结束进程。可能失败。

发送信号可以通过kill 或 killall 来实现,如
kill -signal PID (kill -9 PID)
killall -signal