触发任何一个事件,系统都会将它定义为一个进程,并予以一个ID,既PID。
1 程序与进程
程序(program):通常为二进制,放置在存储媒介中(如 硬盘 光盘等),以物理文件的形式存在
进程(process):程序被触发后,执行者的权限和属性、程序的代码与所需数据都会被加载到内寸中,操作系统给与其一个标识符(PID)。进程就是正在运行中的程序。
父子进程:进程之间是有相关性的,他们之间的关系用PPID(parent PID)来判断。
比如npm 启动一个egg项目,开发模式下又生成3个进程,父子关系就一目了然
linux的程序调用通常称为 fork-and-exec的流程,先有父进程已复制(fork)的方式产生一个一模一样的子进程,然后子进程再以exec的方式执行实际要执行的进程。最终称为一个子进程。
2 系统或网络服务
既常驻在内存的进程,称之为服务(daemon)。
有些进程,如ls,执行完就结束了。
有些进程,如crond,系统本身所需要的服务,还有apache/httpd等专门用于网络连接的服务,是常驻在内存中的。一般这类进程都会在文件名后带上d。
3 进程管理
3.1 查看进程
ps ——查看某一时间点的进程
ps -[Aauxljf]
ps aux 查看系统所有进程 / ps -l 仅查看自己的bash相关进程
top——动态查看进程的变化
top [-d数字] | top [-bnp]
pstree ——查看进程之间的关系
3.2 进程的管理
进程之间可以互相控制,可以通过发送一个信号(signal)去告知进程去做什么。
kill -l 查看所有信号
常用的有
1 启动被终止的进程,类似重新启动
9 强制终止一个进程的执行
15 以正常的方式结束进程。可能失败。
发送信号可以通过kill 或 killall 来实现,如
kill -signal PID (kill -9 PID)
killall -signal