Linux-进程和计划任务管理

程序和进程的关系
程序:

  • 保存在磁盘、光盘等介质的可执行代码和数据
  • 静态保存的代码

进程:

  • 在CPU和内存中运行的程序代码

  • 动态执行的代码

  • 父、子进程

    • 每个程序可以创建一个或者多个进程
  • 父 PDID 子 PID

从出生到消亡的五个状态

  • 1.运行状态 --R
  • 2.睡眠状态可中断 --S
  • 3.睡眠不可中断) --D
  • 4.僵死状态 --Z
  • 5.停止状态 --T
  • 僵尸进程
    僵尸进程是处于僵死状态的进程(只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程便进入Z状态)
  • 产生原因:子进程先于父进程退出,父进程(使用wait()系统调用)没有读取到子进程退出的返回代码,这时候子进程为了保存退出原因,因此进入僵死态不会释放所有资源。僵死进程会以终止状态保持在进程表中,并且会⼀直在等待父进程读取其退出状态代码。
  • 危害:维护退出状态本身就是要用数据维护,也属于进程基本信息,所以保存在task_struct(PCB)中,假如⼀个父进程创建了很多子进程,但是不回收,就会造成内存资源的浪费,资源泄露。
  • 孤儿进程(可了解)
    相对于僵尸进程,那么必须提到的就是孤儿进程,同僵尸进程相反,假如父进程先于子进程退出,子进程便进入后台运行,成为孤儿进程,孤儿进程随后会被1号init进程领养并回收,也就是将其父进程变为init进程。
  • ps aux ps -ef(看副进程) 查看进程
  • Linux-进程和计划任务管理
  • 第一列:D 不可中断 S 可中断 Z僵死 R 正常运行状态 T 停止状态
  • 第二列: s 具有控制性 < 高优先级的(可获得cpu的分片更长)
  • +当前进程运行在前台 N 具有低优先级的 l 是多线程的
  • 快捷键 添加用户 ctrl + alt f1-6
    Linux-进程和计划任务管理
  • 带[]是内核态 不带[] 是用户态
  • Linux-进程和计划任务管理
  • N 按内存排序 z 变色 c 显示命令名称和完整命令行
  • 1 显示cpu个数和状态
  • load average 平均负载 ;Load则表示系统的繁忙程度
  • 当前时间,系统运行时间,当前登录用户数,系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
    系统负载System Load:系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度
    平均负载(Load Average):一段时间内系统的平均负载,这个一段时间一般取1分钟、5分钟、15分钟
  • ps -e | head
  • ps -o user,pid
  • top -d 5 设置更新时间
  • top -p 进程的pid 看指定进程
  • pstree -u 查看进程由什么产生 谁在使用
  • pstree -p 显示进程的pid
  • pgrep -l
    Linux-进程和计划任务管理
  • ctrl +z 在命令中 调到后台 &
  • jobs 看后台进程
  • top中选项:h:查看选项参数
    M:按物理内存占用大小排序
    N:按PID大小降序排序
    P:按cpu占用大小排序(top默认也是按cpu占用率大小排序的)
    1:查看多个cpu的情况
    z:彩色显示
    q:退出top
    终止进程:一般用户在前台执行某个进程时,可以按ctrl+c组合键强制进行中断,但当ctrl+c无法终止程序时,可以使用专门的进程终止工具kill、pkill和killall
    ctrl+c
终止进程:

kill:通过kill终止进程需要后面跟PID号作为参数,杀后台作业任务的时候后面需要跟%作业序号
kill -l 可以查看所有信号
kill -9 强制终止进程(慎用)9是代表一种信号
killall:杀死指定名字的所有进程,后面也可跟信号比如-9,后面跟进程名
pkill:大部分选项与pgrep相似,如-t、-U也可以-9

kill [选项] 进程号(功能描述:通过进程号杀死进程)

killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

常用选项: -9 :表示强迫进程立即停止

上一篇:【Linux】如何杀掉defunct进程-僵尸进程


下一篇:docker HEALTHCHECK