zoukankan      html  css  js  c++  java
  • linux进程(一)

    回顾:
    CentOS6的启动过程
    开机自检->找硬盘->操作系统->内核->进程->登录

    Systemd借鉴了很多launchd的思想,他的重要特性如下:
    1.同SysVinit和系统初始化脚本兼容。
        CentOS5 init
        CentOS6 upstart
        CentOS7 systemd
    2.更快的启动速度
    3.通过按需启动能力
    4.更优的进程跟踪特性和管理进程的生命周期
    5.内建自动挂载服务
    6.实现事务性依赖关系管理
    7.能够对系统进行快照和恢复
    8.自带journeald日志服务
        centos5/6 syslog

    什么是进程

    进程是已启动的可执行程序的运行实例,进程有以下部分组成
            分配内存,已分配内存的地址空间
            安全属性,进程的运行身份和权限
            进程代码,运行一个或多个线程
            进程状态,进程运行后的多种状态

    静态程序,二进制文件,静态/usr/bin/ls,/usr/bin/sshd
    动态进程,程序运行的过程,有生命周期及运行状态

    进程的运行状态,包括以下部分
    局部和全局变量
    当前的调度上下文
    分配给进程使用的系统资源,例如文件描述符、网络端口等
    给进程分配对应的PID,PPID

    进程生命周期

    程序运行时进程的状态关系
    父进程复制自己的地址空间创建新的子进程,子进程可以继承父进程(PPID)的环境变量。
    每个进程都有自己的唯一ID(PID)
    进程是由systemd这个父进程派生出来的子进程
    子进程在运行自己的程序代码的时候,父进程往往会进入到睡眠状态
    子进程完成程序代码发出退出信号请求
    子进程已经关闭或丢弃其资源环境,剩余的部分称之为僵停(僵尸Zombie)
    父进程在子进程退出时收到信号会被唤醒,清理剩余的结构,然后继续执行其自己的程序代码

    监控和管理进程

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

    静态监控进程

    静态查看进程退出使用ps命令

    了解进程如下选项:

    PID,PPID

    当前的进程状态

    内存的分配情况

    CPU和已花费的时间

    用户UID决定进程的特权

    [root@localhost ~]# ps aux|less

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

    root          1  0.0  0.0 125336  3800 ?        Ss   10:39   0:01 /usr/lib/systemd/systemd --switched-root --system

    USER: //运行进程的用户

    PID: //进程ID

    %CPU: //CPU 占用率

    %MEM:  //内存占用率

    VSZ: //占用虚拟内存

    RSS:  //占用实际内存 驻留内存

    TTY: //进程运行的终端

    STAT: //进程状态 man ps (/STATE)

        R //进程运行

        S //可中断睡眠

        D //不可中断睡眠

        Z //僵尸进程

        X //进程已经退出

        T //进程被暂停

        Ss s //进程的领导者,父进程

        S< < //优先级较高的进程

        SN N //优先级较低的进程

        R+ + //表示是前台的进程组

        Sl //以线程的方式运行

    START: //进程的启动时间

    TIME: //进程占用CPU的总时间

    COMMAND: //进程文件,文件名

    ps -ef

    //对进程的cpu进行排序展示

    [root@localhost ~]# ps aux --sort %cpu | less

    [root@localhost ~]# ps aux --sort -%cpu | less

    //显示进程的子进程

    [root@localhost ~]# yum install -y httpd

    [root@localhost ~]# systemctl start httpd

    [root@localhost ~]# ps auxf | grep httpd

    root       1990  0.0  0.0 112728   972 pts/0    S+   20:02   0:00          \_ grep --color=auto httpd

    root       1963  0.0  0.1 224064  5004 ?        Ss   19:50   0:00 /usr/sbin/httpd -DFOREGROUND

    apache     1964  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

    apache     1965  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

    apache     1966  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

    apache     1967  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

    apache     1968  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

    //自定义显示字段

    [root@localhost ~]# ps axo user,pid,ppid,%mem,command | grep httpd

    root       1963      1  0.1 /usr/sbin/httpd -DFOREGROUND

    apache     1964   1963  0.0 /usr/sbin/httpd -DFOREGROUND

    apache     1965   1963  0.0 /usr/sbin/httpd -DFOREGROUND

    apache     1966   1963  0.0 /usr/sbin/httpd -DFOREGROUND

    apache     1967   1963  0.0 /usr/sbin/httpd -DFOREGROUND

    apache     1968   1963  0.0 /usr/sbin/httpd -DFOREGROUND

    root       1992   1884  0.0 grep --color=auto httpd

    //查看指定进程PID

    [root@localhost ~]# ps aux | grep sshd

    root       1123  0.0  0.1 112920  4360 ?        Ss   10:40   0:00 /usr/sbin/sshd -D

    root       1882  0.0  0.1 161528  6084 ?        Ss   19:34   0:00 sshd: root@pts/0

    root       1997  0.0  0.0 112728   968 pts/0    R+   20:18   0:00 grep --color=auto sshd

    [root@localhost ~]# cat /run/sshd.pid 

    1123

    [root@localhost ~]# ps aux |grep ssh|awk 'NR==1{print $2}'

    1123

    //pgrep常用参数,-l,-a

    [root@localhost ~]# pgrep sshd

    1123

    1882

    [root@localhost ~]# pidof sshd

    1882 1123

    //查看进程树

    [root@localhost ~]# pstree

    systemd─┬─NetworkManager───2*[{NetworkManager}]

            ├─agetty

            ├─auditd───{auditd}

            ├─crond

            ├─dbus-daemon

            ├─firewalld───{firewalld}

            ├─httpd───5*[httpd]

            ├─lvmetad

            ├─master─┬─pickup

            │        └─qmgr

            ├─polkitd───6*[{polkitd}]

            ├─rsyslogd───2*[{rsyslogd}]

            ├─sshd───sshd───bash───pstree

            ├─systemd-journal

            ├─systemd-logind

            ├─systemd-udevd

            └─tuned───4*[{tuned}]

    动态监控进程

    [root@localhost ~]# top

    [root@localhost ~]# top -d 1

    [root@localhost ~]# top -d 1 -p 31 查看指定进程的动态信息

    [root@localhost ~]# top -d 1 -p 1372,1

    [root@localhost ~]# top -d 1 -u apache

    [root@localhost ~]# top -d 1 -b -n 2 > top.txt

    top常见指令

    h 查看帮助

    z 以彩色信息展示

    l 显示所有cpu的负载

    s 设置刷新时间

    b 高亮显示处于R状态的进程

    M 按内存使用百分比排序输出

    P 按cpu使用百分比排序输出

    R 对排序进行反转

    f 自定义显示字段

    k kill掉指定PID进程

    w 保存top环境设置 ~/.toprc

    q 退出

    案例:web压力测试

    ab -c 10 -n 1000 https://www.baidu.com/index.html

    -c 10表示并发用户数为10

    -n 1000表示请求总数为1000

    https://www.baidu.com/index.html  表示请求的目标url

    请求10次,1000个并发

    linux有两个特殊的设备文件

    /dev/zero 无穷大的文件

    /dev/null 黑洞文件

    系统负载的计算和意义

    进程以及子进程和线程产生的计算指令都会让cpu执行,产生请求的这些进程组成“运行队列”,等待cpu执行,这个队列就是系统负载,系统负载是所有cpu

    的运行队列的总和

    [root@localhost ~]# w

     13:16:13 up 21 min,  2 users,  load average: 0.00, 0.01, 0.05

    //假设当前计算机有4个核心的cpu,当前的负载是2.94

    cpu1   cpu2  cpu3  cpu4

    2.94/4(个cpu核心)=73%的cpu资源被使用,剩下的27%的cpu计算资源是空闲的

    //假设当前计算机有2个核心的cpu,当前的负载是2.92

    2.92/2=146% 已经验证超过了cpu的处理能力

    top的进程优先级

        nice

       priority

           值越小,越优先

               0   FIFO 先进先出 first input first output

               -20 RR LL 低延迟队列 

               20

    做优先级为了区分服务  

    企业流量优先级

    音频

    视频

    总结:

    进程查看命令:

    静态:

    ps pstree pgrep pidof

    动态:

    top

    zabbix

  • 相关阅读:
    第三次jsp作业
    快速排列 使用链表
    Cross
    题目
    ranch
    robot
    Mold
    Mold2
    OX_pattern
    KSC sort
  • 原文地址:https://www.cnblogs.com/xmtxh/p/11973227.html
Copyright © 2011-2022 走看看