linux进程管理

本文知识点:

  • 进程管理工具
  • 父进程和子进程
  • 前台和后台进程
  • 在文件系统中查看进程

    一、进程管理工具(ps,ss,fuser,kill)
    进程查看三部曲:
    (1)ss -tnl:查看当前系统正在监听的端口
    (2)fuser -n tcp POT:根据进程的端口号查看进程号PID
    (3)ps aux | grep PID:根据上一步查找到的进程号来进一步查看进程的情况,进程号查找出来了就可以使用其他命令对进程进行操作,如kill命令
    列出所有进程(top):此处仅以top为例
    top命令可以列出所有的进程,如图:
    linux进程管理
    (1)09:24:05 up:表示系统启动的时间点
    (2)48min:表示系统已经运行了多久
    (3)1user:表示当前系统有多少个连接用户
    (4)load average:后面的三个值分别表示当前系统在近1分钟,5分钟,15分钟内的负载平均值,如果系统有多个核心的话还得使用load/cpus来计算每个核心的负载
    (5)第二行表示的是系统的总进程数,后面的一些参数都是响应状态的进程数
    (6)第三行表示的CPU状态,us表示un-nice用户进程占用时间,sy表示系统占用时间,ni表示nice用户进程所占用的cpu时间,id表示CPU空闲百分比,wa表示IO占用的时间,hi表示硬中断时间,si表示软中断时间,系统从vm偷取的时间。
    (7)后面两行表示系统的内存状况(Mem:内存;swap:交换内存)
    二、父进程和子进程
    输入ps aux 或者ps -ef都可显示当前系统进程列表。如图:
    linux进程管理
    (1)第一行的题头分别为:
    USER:启动该进程的用户名
    PID:该进程的进程号
    %CPU:CPU占比
    %MEM:内存占比
    VSZ:进程占用的虚拟内存大小
    RSS:进程占用的非交换内存大小
    TTY:运行该进程所在的终端号
    STAT:进程当前状态(S,R,Z)
    START:进程启动时间
    TIME:进程启动了多长时间
    COMMAND:进程的二进制文件路径或进程文件名
    linux进程管理
    (2)第一行表示的内容为:
    UID:进程所属用户名
    PID:进程号
    PPID:父进程号
    C:进程占用CPU百分比,比较粗略
    STIME:进程启动时间
    TTY:启动进程的终端号
    TIME:进程消耗的CPU时间
    CMD:进程的二进制文件名
    父进程:是父进程的进程ID,系统的每个进程都不是凭空产生的,而是由一个父进程执行fork()系统调用创建出来的子进程。unix/linux系统启动时的第一个进程是init进程,通过它fork出其他进程,这些被fork出的进程再,创建其他的一些子进程,以此类推,形成整个系统的进程树,可以把init进程看成是树干,其他进程是树枝。—摘自《bash编程艺术》
    ps命令的其他用法:
    (1)ps -ft:显示进程的终端路径(没有终端的不显示),ps -tf会报错,可使用pkill -kill -t pts/0来杀掉/dev/pts/0这个终端,注意不能用全路径
    (2)ps -fp PID:列出指定进程号的进程
    (3)ps -fu USERNAME:列出指定用户的所属进程
    (4)ps -fC filename:列出使用特定文件的进
    pstree命令的一些用法:
    linux进程管理
    (1)默认情况下,pstree会将相同的子进程合并在一起,然后前面加上合并的数量即可,但是-c选项可以将所有子进程以不合并的方式列出来
    (2)-p可以指定列出哪个PID的进程
    三、前台进程和后台进程
    前台进程:在终端输入命令,运行的这段时间可以称它为前台进程,比如tailf /var/log/message,这个进程一直占据着终端,并且在前台运行,即可称之为前台进程
    后台进程:将tailf /var/log/message变成后台进程的方式如下:
    (1)tailf /var/log/message &(在命令行的最后面加上&符号即可)
    (2)tailf /var/log/message运行后,输入ctrl+z即可将进程放到后台,不过是停止状态
    将后台进程调至前台并运行两步曲:
    (1)jobs -l
    linux进程管理
    (2)fg %#:这里的#号表示的是后台任务的序号
    linux进程管理
    (3)将后台停止的进程唤醒,并且在后台运行
    linux进程管理
    四、/proc/文件系统(存在于内存中,不可通过bash修改)
    /proc/sys:保存当前运行的内核参数,修改方式:
    (1)echo “/proc/net/ipv4/ip_forward=1” >> /etc/sysctl.conf
    (2)sysctl -p
    查看/proc/文件系统相关目录:
    linux进程管理
    linux进程管理
    显示内核当前模块:
    lsmod