进程是正在运行的程序的实体
程序:动态概念,具有生命周期,无法长期存放在系统中 进程:静态概念,代码的集合,可以长期存放在系统中
3.进程的生命周期
1.用户发起请求 2.父进程fork出子进程,子进程会继承父进程的大部分属性 3.子进程在处理任务的过程中,父进程在wait状态等待着子进程 4.正常结束 5.非正常结束会产生僵尸进程和孤儿进程
僵尸进程: 在子进程完成任务时,父进程没有及时回收子进程的资源,此时子进程便是僵尸进程 原因: 子进程的结束与父进程的运行是异步的,父进程不知道子进程什么时候结束,那么在子进程结束时父进程在繁忙状态下没有及时回收子进程就会导致子进程变为僵尸进程
孤儿进程: 子进程在父进程分配的任务途中,父进程结束,则会导致子进程变为孤儿进程 原因: 子进程结束与父进程运行的是异步的,当父进程正常完成任务或者被其他原因终止时,子进程还没有执行完任务,则子进程变为孤儿进程
ps:进程状态管理命令 语法: ps [选项] [参数]
a:查看所有与终端相关的进程
u:以用户为主的格式显示进程的状态
x:查看所有与终端无关的进程
--sort:排序
o:自定义显示字段
f:查看子进程与父进程的关系
-e:显示所有进程
-f:显示进程的UID,PPID,C,与STIME栏位
ps -ef
ps aux
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2 0.0 0.0 0 0 ? S 02:15 0:00 [kthreadd] USER:该进程的管理用户 PID:进程号 %CPU:进程占用cpu的百分比 %MEM:进程占用内存的百分比 VSZ:进程占用虚拟内存的大小 RSS:进程占用真实内存的大小 TTY:终端进程 ?:由内核发起的进程 tty:机器上的终端进程 pts/N:远程连接工具的终端进程 STAT:进程的运行状态 D:无法中断的休眠状态(通IO的过程) R:正在运行的状态 S:处于休眠状态的进程 T:暂停或者被追踪的状态 W:进入交换内存的进程 X:死掉的进程(很少见) Z:僵尸进程 <:优先级高的进程 N:优先级低的进程 L:有些数据页被锁进内存的进程 s:父进程 l:以线程的方式运行 |:存在多个进程的进程 +:正在前台运行的进程 START:进程的开启时间 TIME:该进程占用cpu的时间 COMMAD:进程的命令 []:内核态进程(系统运行的进程) 没有[]:用户态进程(用户运行的进程)
jobs:查看后台所有被暂停的进程
bg:把后台暂停的进程运行起来,后面加上暂停的数字,即可运行相应的进程(默认为最后一个)
fg:把后台暂停的进程,调到前台并运行,后面加上暂停的数字,即可将相应的进程调动到前台运行(默认为最后一个)
pgrep:查看指定进程的pid 语法: pgrep [选项] 运行的程序
-l:显示该进程的启动命令
-a:显示该进程的完整描述信息
pidof:查看指定进程的pid