加载中...

Linux 进程管理


Linux 进程管理

查看进程

ps命令

ps aux

命令解释

  • a 显示当前终端下的所有进程信息,包括其他用户的进程
  • u 以用户为主的进程状态
  • x 显示所有进程,不以终端机来区分
  • -e:显示系统内所有的进程信息
  • -l :使用长格式显示进程信息
  • -f :使用完整的格式显示进程信息

显示出来的信息

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  • USER 启动这些进程的用户
  • PID 进程的PID
  • %CPU 进程占用CPU的百分比
  • %MEM 进程占用内存的百分比
  • VSZ 进程占用的虚拟内存大小(KB)
  • RSS 进程占用的物理内存的大小(KB)
  • START 该进程被触发的时间
  • TIME 该进程实际使用CPU运作的时间
  • COMMAND 该程序使用的指令
  • STAT 该程序目前的状态,linux进程有五种基本状态:
    • R 该程序目前正在工作,或者是可被运作
    • S 该进程目前正在睡眠中,可被某些讯号唤醒
    • T 该程序目前正在侦测或者是停止了
    • Z 该进程应该已经被终止,但是其父程序却无法正常终止他,造成僵尸进程
    • D 不可中断状态
    • 五个基本状态后的小状态:
      • < 表示进程运行在高优先级上
      • N 表示进程运行在低优先级上
      • L 表示进程有页面锁定在内存中
      • s 表示进程是控制进程
      • l 表示进程是多线程
      • + 表示当前进程运行在前台

pstree命令

pstree

显示出来的信息

各个进程的树形结构

pgrep命令

  • 例:匹配用户root下包含ssh的最新进程的“PID、进程名和完整的命令行”
pgrep -lanu root ssh

命令解释

  • -d, –delimiter 指定输出分隔符
  • -l, –list-name 列出PID和进程名
  • -a, –list-full 列出 PID 和完整的命令行
  • -v, –inverse 否定匹配
  • -w, –lightweight 列出所有 TID
  • -c, –count 匹配进程的计数
  • -f, –full 使用完整的进程名来匹配
  • -n, –newest 选择最近开始的
  • -o, –oldest 选择最初开始的
  • -s, –session <SID,…> 匹配会话 ID
  • -u, –euid <ID,…> 指定用户
  • -x, –exact 与命令名完全匹配

注意:pgrep使用正则匹配

和ps命令一起使用

ps aux | grep ssh

top命令

top

显示出来的信息

  • Tasks:
    • total 总进程数
    • running 正在运行的进程数
    • sleeping 睡眠的进程数
    • stopped 停止的进程数
    • zombie 僵尸进程数
  • %Cpu(s):
    • us 系统用户进程使用CPU百分比
    • sy 内核中的进程占用CPU百分比
    • ni 用户进程空间内改变过优先级的进程占用CPU百分比
    • id 空闲的CPU百分比
    • wa CPU等待I/O完成的时间总量
    • hi 硬中断占比
    • si 软中断占比
    • st 虚拟机占用物理的时间,例如物理机运行了KVM,则表示KVM占用物理机的CPU时间
  • KiB Mem:
    • total 物理内存总量
    • free 空闲内存总量
    • used 使用的物理内存总量
    • buff/cache 内核缓存内存量
  • KiB Swap
    • total 交换分区总量
    • free 空闲交换分区总量
    • used 使用的交换分区总量
    • cached 可利用内存总量

快捷键

  • q 退出
  • P 按CPU排序按CPU排序
  • M 按内存排序
  • T 按时间排序
  • 1 显示每个内核的CPU使用率
  • u/U 指定显示的用户
  • h: 帮助
  • -p: top -p 进程号,查看某个进程状态

uptime查看系统负载

uptime

显示出来的信息

对应系统时间,系统已运行时间,登录用户数,load average(分别为1分钟、5分钟、15分钟前到现在的平均值)

后台运行进程

&命令

在运行命令后面加上&:

bash test.sh &

nohup命令

nohup的方法可以使终端关闭后依旧保持运行:

nohup bash test.sh &

该程序默认输出在nohup.out文件,通过指令重定向输出文件:

nohup bash test.sh > test.log 2>&1 &

其中2>&1表示将错误输出重定向到标准输出

杀死进程

kill

显示可用的信号

kill -l

强制终止进程

kill -KILL 123456

彻底杀死进程

kill -9 进程pid

杀死指定用户的进程

kill -u test

注意:Linux的kill命令是向进程发送信号,kill不是杀死的意思,-9表示无条件退出,但由进程自行决定是否退出,这就是为什么kill -9终止不了系统进程和守护进程的原因。

killall

killall 进程名称 

文章作者: 知蝉
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 知蝉 !
评论
  目录