对于 Linux 系统而言,掌握进程知识,才有可能学好网络编程,解决实际问题。
一个可执行的程序在被执行之后的实例。
每个进程都有一个唯一的 ID--PID,也有一个父进程 ID--PPID,所有进程都是第一个进程的后代,在 Red Hat7 中为 systemd。
进程的生命周期有:就绪态,执行状态,等待,消亡状态。
用 man 7 signal 查看。
- R :可运行状态
- S : 可中断睡眠状态(当某个时间或信号满足条件时,该进程会被唤醒)
- D :不可中断睡眠状态(其唤醒的资源完全无法预料)
- K :可通过信号强行停止
- Z:僵尸进程
- X:进程成功退出
- T:进程被停止
列出进程的命令:ps aux, ps -ef (-e 列出所有进程,-f 列出进程的详细信息)
(调出火狐浏览器)
(火狐浏览器放置后台运行)
(查看后台进程)
(后台进程转为前台进程)
- Ctrl + z 将进程放到后台并暂停
- Ctrl + c 将进程强制结束
- bg %jobid 将前台进程转到后台
(列出所支持的信号)
(杀死进程)
(列出进程目录树)
(杀死sleep的所有进程)
(pkill的使用)
- 格式:kill signal PID 只能杀死一个进程
- 格式:killall 进程名字
- killall -signal 进程名字
- killall -signal -u username 进程名字
- pkill 类似 killall,但命令可以模糊匹配。
系统负载的计算和意义:进程以及子进程和线程产生的计算指令都会让CPU执行,这些进程组成“运行队列”,等待CPU执行,这个队列就是系统负载。
每个CPU拥有独立的请求队列。可看/proc/cpuinfo。
(查看cpu信息)
top 命令实时监控进程状态。
原创文章链接:Linux 进程基础知识