每天一点Linux-10关于进程

  1. 关于进程
    1. 什么是进程?
    2. 进程的生命周期
    3. 进程状态
  • 查看进程 process
    1. 静态查看进程 ps
    2. 动态查看进程 top
      1. 命令:
  • 关于进程

    What is a process? 什么是进程
    Process life cycle 进程的生命周期
    Process states 进程状态

    什么是进程?

    进程是已启动的可执行程序的运行实例,进程有以下组成部分:

    • 已分配内存的地址空间;
    • 安全属性,包括所有权凭据和特权;
    • 程序代码的一个或多个执行线程;
    • 进程状态。

    程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix
    进程: 是程序运行的过程, 动态,有生命周期及运行状态。

    进程的生命周期

    父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
    Centos5/6: init
    Centos7: systemd

    子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

    进程状态

    在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。

    1

    查看进程 process

    了解如进程的:
    • PID,PPID
    • 当前的进程状态
    • 内存的分配情况
    • CPU和已花费的实际时间
    • 用户UID,它决定进程的特权

    静态查看进程 ps

    注:ps -aux (unix)不同于 ps aux (BSD)

    [yang@ecs-ea9d ~]$ ps aux |less
    
    USER PID %CPU %MEM VSZ    RSS  TTY STAT START  TIME  COMMAND
    root 1   0.0  0.0  125216 3676  ?   Ss  15:13  0:00  /usr/lib/systemd/systemd--switch
    root 2   0.0  0.0    0     0    ?   S   15:13  0:00  [kthreadd]
    

    systemd:Centos7中的初始进程

    • USER: 运行进程的用户
    • PID: 进程ID
    • %CPU: CPU占用率
    • %MEM: 内存占用率
    • VSZ: 占用虚拟内存
    • RSS: 占用实际内存 驻留内存
    • TTY: 进程运行的终端
    • STAT: 进程状态 man ps (/STATE)
      • R 运行
      • S 可中断睡眠 Sleep
      • D 不可中断睡眠
      • T 停止的进程
      • Z 僵尸进程
      • X 死掉的进程
      • Ss s进程的领导者,父进程
      • S< <优先级较高的进程
      • SN N优先级较低的进程
      • R+ +表示是前台的进程组
      • Sl 以线程的方式运行
    • START: 进程的启动时间
    • TIME: 进程占用CPU的总时间
    • COMMAND: 进程文件,进程名

    [yang@ecs-ea9d ~]$ ps aux –sort %cpu |less //按照cpu使用情况排序,升序
    [yang@ecs-ea9d ~]$ ps aux –sort -%cpu |lessq //按照cpu使用情况排序,降序
    [yang@ecs-ea9d ~]$ ps aux –sort rss |less //按照内存使用情况排序,升序
    [yang@ecs-ea9d ~]$ ps aux –sort -rss |less //按照内存使用情况排序,降序

    httpd:帮助查看进程父子关系

    ​ [yang@ecs-ea9d ~]$ sudo yum -y install httpd
    ​ [yang@ecs-ea9d ~]$ sudo systemctl start httpd
    ​ [yangt@ecs-ea9d ~]# ps auxf |grep httpd

    [yang@ecs-ea9d ~]$ ps -ef

    UID  PID PPID C  STIME  TTY  TIME      CMD
    root 1   0    0  08:47  ?    00:00:00  /usr/lib/systemd/systemd --switched-root --system 
    

    //自定义显示字段
    [yang@ecs-ea9d ~]$ ps axo user,pid,ppid,%mem,command
    [yang@ecs-ea9d ~]$ ps axo user,pid,ppid,%mem,command |grep httpd
    [yang@ecs-ea9d ~]$ ps axo user,pid,ppid,%mem,%cpu,command –sort -%cpu |less

    //查看指定进程的PID
    [yang@ecs-ea9d ~]$ cat /run/sshd.pid
    777
    [yang@ecs-ea9d ~]$ ps aux |grep sshd
    [yang@ecs-ea9d ~]$ pgrep -l sshd
    [yang@ecs-ea9d ~]$ pgrep sshd
    [yang@ecs-ea9d ~]$ pidof sshd

    //查看进程树
    [yang@ecs-ea9d ~]$ pstree

    动态查看进程 top

    默认每三秒动态更新一次,也可以回车进行

    [yang@ecs-ea9d ~]$ top
    [yang@ecs-ea9d ~]$ top -d 1
    [yang@ecs-ea9d ~]$ top -d 1 -p 10126 查看指定进程的动态信息
    [yang@ecs-ea9d ~]$ top -d 1 -p 10126,1
    [yang@ecs-ea9d ~]$ top -d 1 -u apache 查看指定用户的进程
    [yang@ecs-ea9d ~]$ top -d 1 -b -n 2 > top.txt 将2次top信息写入到文件

    第一部分:系统整体统计信息

    load average: 0.86, 0.56, 0.78 系统最近 1分钟,5分钟,15分钟平均负载

    第二部分:进程信息

    命令:

    • h或? 帮助
    • M 按内存的使用排序
    • P 按CPU使用排序
    • N 以PID的大小排序
    • R 对排序进行反转
    • f 自定义显示字段
    • < 向前, > 向后
    • W 保存top环境设置
    • 1 显示所有CPU的负载
    • z 彩色**

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com

    文章标题:每天一点Linux-10关于进程

    本文作者:DROBP

    发布时间:2019-08-18, 12:01:20

    最后更新:2019-08-18, 17:37:54

    原始链接:https://DROBP.github.io/2019/08/18/每天一点Linux-10关于进程/

    版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

    目录
    ×

    喜欢就点赞,疼爱就打赏