- 进程、程序、服务
进程:一个执行可执行代码的一段具有时间性的实例
程序:一个可执行代码以及其附属相关的文档的实例
服务:通常在后台运行的,不受其前台终端控制的程序
其之间的关系
程序包括了进程,一个程序可以有很多个进程,比如office一个程序,其就包括了文档进程,上传进程,下载进程等等。
进程则属于某一个程序,一个进程在某一个时刻一定是属于某一个程序的,为某一个程序服务的。
服务则是在后台运行的程序的,服务在Linux里面则属于一个比较大的概念,也包括了很多程序,比如Apache Tomcat,Httpd等等。
- 进程的分类
守护进程:总是在后台运行的,等待处理别的任务的进程,在一定程度上,我们可视为一种服务。在Linux系统中,守护进程通常用root启动或者系统自启动,然后等待任务的处理。
交互进程:shell环境下,可执行的进程的,是属于一种交互式的进程。
批处理进程:一个待处理的进程的序列,把多个进程排列在一起,进行相关的批处理。
-
进程的状态
3.1 可运行 (正在运行?等待运行?)
3.2 可中断()
3.3 等待
3.4 僵死
3.5 暂停(阻塞)(IO阻塞?时间片切换?) -
服务的分类
在Linux系统中,服务通常分为
4.1 前台服务,后台服务
4.2 RPM安装的服务(独立的服务,基于xinted的服务),源代码安装的服务
- 进程管理
5.1 进程查看
ps aux #查看系统上所有用户的所有进程的信息
ps aux | grep username #查看所属用户的所有进程信息
ps -l # 长格式显示所有的进程信息
ps -r # 正在运行的进程信息
ps -f #完整显示进程信息
ps -p #根据pid 显示进程信息
ps -t #显示终端信息
pstree -a/c pid/user #以树状显示进程的继承关系
5.2 杀死进程
sudo kill pid #杀死pid对应的进程
sudo killall name #根据进程名杀死对应的进程
sudo kill -9 pid # 强制杀死进程
#kill的原理 向Linux的系统内核发送系统操作信号以及某个进程的标志号,让系统内核去处理相关的进程。
5.3 作业相关
ctrl+c #强行终止进程
ctrl+d #正常终止进程
ctrl+z #挂起进程
jobs #查看后台的作业
bg #后台运行
fg #前台运行
cmd& #后台运行新的命令
kill #杀死进程
5.4 进程的恢复和挂起
ctrl+z 挂起进程
bg name #前台恢复进程
fg name #后台恢复进程
- 进程的动态监控(类似于Windows下任务管理器)
top
#指标理解
Mem : 物理内存
Swap: 交换内存
PID: 进程ID
USER: 用户名
PR: 优先级
NI: 该进程的优先级
VIRT: 虚拟内存
RES:物理内存
SHR:共享内存
- 进程和文件相关
lsof filename # 显示利用filename文件的进程
lsof -c abc # 显示abc进程使用的文件
lsof -g gid # 显示进程组打开的文件
lsof -p pid # 显示进程pid打开的文件
lsof -i [46][protocol][@hostname][:service|port] #显示端口协议主机等信息
- 总结
7.1 父进程的pid永远小于子进程的pid
通常先关闭子进程,再关闭父进程,如果强制关闭父进程,子进程则变成了孤儿进程,Linux会选择init进程作为其父进程。
7.2 kill默认选择正常结束进程,发送15的信号类型。9是强制,2是结束但不强制,通常是挂起的状态。