进程核心知识1. 进程与守护进程1.1 进程1.2 守护进程1.3 进程工作流程2. 进程相关命令2.1 ps2.2 pstree2.4 top2.5 jobs2.6 fg2.7 bg2.8 pidof2.9 kill2.10 pkill2.11 strace
进程指程序运行起来之后的产物,存在于内存中,程序运行结束就会消失
守护进程指为提供某种服务而持续运行的进程

1.当程序运行时会产生父进程,并可能fock多个子进程
2.当父进程接收到任务调度时,将任务交给派生的子进程处理,子进程会继承父进程属性
3.子进程在处理任务时,父进程会进入等待...
4.子进程处理任务完成后,会发出信号并执行退出,退出前会唤醒父进程来回收子进程的资源
5.如果子进程在处理任务过程中异常退出终止,父进程就可能没有回收子进程的资源,导致子进程虽然运行实体已经消失,但仍然在内核中的进程表中占据记录(僵尸进程),长期下去会浪费系统资源
6.如果子进程在处理任务过程中,父进程意外退出或终止,子进程可能未退出,那么子进程就没有父进程来管理了,有系统的system进程管理(孤儿进程)
xxxxxxxxxxps #查看系统进程状态-a #显示所有进程-u #显示用户以及其他详细信息-x #显示没有控制终端的进程-e #显示所有进程-f #额外显示UID/PPID/C与STIME栏位
#常用组合:ps aux[root@localhost ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.7 128564 7204 ? Ss 18:49 0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0.0 0.0 0 0 ? S 18:49 0:00 [kthreadd]
USER #进程所有者PID #进程号%CPU #占用的CPU使用率%MEN #占用内存使用率VSZ #虚拟内存使用量RSS #占用的固定内存使用量TTY #所在终端STAT #进程状态 R #运行 S #中断 D #不可中断 Z #僵死 T #停止TIME #实际使用CPU的时间COMMAND #命令名称与参数
#常用组合:ps -ef[root@localhost ~]# ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 18:49 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0 0 18:49 ? 00:00:00 [kthreadd]
UID #进程被该UID所拥有,程序运行必须要有用户,一般是虚拟用户PID #进程的标识号PPID #进程的父进程的标识号C #CPU使用的资源百分比STIME #进程开始的时间TTY #该进程是在哪个终端机上面运作,若与终端机无关,则显示?,另外, tty1-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的进程TIME #进程所使用的总的CPU时间CMD #正在执行的命令行xxxxxxxxxxpstree #以树状结构显示所有进程,需要安装使用:yum install psmisc -y-a #显示启动每个进程对应的完整指令,包含启动进程的路径、参数等-c #显示的进程中包含子进程和父进程-h #对现在执行的程序进行特别标注-n #根据进程PID号排序输出,默认是以程序名称排序输出的-p #显示进程的PID-u #显示进程对应的用户名称xxxxxxxxxxtop #动态监控系统进程状态及系统负载-d #改变刷新时间,默认刷新时间是5s-c #切换显示模式,一是显示执行档的名称,另一是显示完整路径的名称
top命令执行结果说明:#第一行内容:系统时间、运行时间、登录终端数、系统负载(load average:三个数值分别为1分钟,5分钟,15分钟内的平均值,数值越小意味着负载越低)#第二行内容:进程总数、运行中的进程数、休眠的进程数、停止的进程数、僵死的进程数#第三行内容:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比#第四行内容:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量#第五行内容:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量
top快捷键:1 #查看系统核心总数q #退出topM #按内存使用百分比排序输出P #按CPU使用百分比排序输出R #对已排序的列反转排序x #高亮显示排序的列z #以彩色信息展示b #高亮显示处于R状态的进程>或< #改变排序的列,依然高亮显示xxxxxxxxxxjobs #用于查看后台运行的进程-l #列出进程的PID-n #只列出上次发出通知后改变状态的进程-p #只列出进程PID-r #只列出运行中的进程-s #只列出已停止的进程xxxxxxxxxxfg #用于将后台进程恢复到前台执行xxxxxxxxxxbg #用于将进程放到后台执行(和&作用相同)xxxxxxxxxxpidof #用于查询指定进程的PID-s #仅返回一个进程PID-c #返回具有同一根目录的进程PID-x #返回指定运行脚本的shell进程PID-o #忽略具有指定进程PID的进程xxxxxxxxxxkill #用于杀死指定进程-kill #强制杀死进程-9 #立即彻底杀死一个进程-15 #正常停止一个进程xxxxxxxxxxpkill #用于杀死指定名称的所有服务进程-p #杀死进程所属的进程组-i #杀死进程前确认-u #杀死指定用户的进程xxxxxxxxxxstrace #跟踪进程的系统调用-p #指定要跟踪的进程PID,要同时跟踪多个PID,重复多次-p选项即可-f #跟踪目标进程,以及目标进程创建的所有子进程-tt #在输出的每一行前加上时间信息,精确到微秒