Linux进程管理 day22

作者: 静如止水yw | 来源:发表于2019-08-22 17:21 被阅读0次

    1.管理进程状态
    2.管理后台进程
    3.进程的优先级
    4.系统平均负载


    一、管理进程状态

    昨天主要学习了进程(正在运行的程序)、进程与程序的区别(进程是动态的有生命周期的,程序是静态的,可以永久存储至磁盘)、进程的生命周期(使用ps、top命令查看进程状态)以及进程运行的状态指标。

    如何管理进程状态?

    使用kill命令管理正在运行的进程

    使用kill -l命令列出当前系统所支持的信号


    正在运行的进程

    PS:Linux系统中最常用的3个信号

    数字编号 信号含义 信号翻译
    1 SIGHUP 通常用来重新加载配置文件
    9 SIGKILL 强制杀死进程
    15 SIGTERM 终止进程,默认kill使用该信号
    • 1)使用kill命令杀死指定PID的进程
    # 1.发送信号1,15给vsftpd
    [root@wyw-10 ~]# yum install vsftpd -y           安装vsftpd程序
    [root@wyw-10 ~]# systemctl start vsftpd          启动vsftpd
    [root@wyw-10 ~]# ps aux | grep vsftpd           使用ps查看进程的状态
    
    # 2.使用kill -1,发送重载信号,如将vsftpd的配置文件发生改变,重新加载
    [root@wyw-10 ~]# kill -1 95934
    
    # 3.发送停止信号
    [root@wyw-10 ~]# kill 95934           
    [root@wyw-10 ~]# kill -9 95934
    # 4.使用kill -9 强制停止信号 
    
    • 2)使用killall pkill命令杀死指定名字的进程。
    # 1.通过服务名称杀掉进程
    [root@wyw-10 ~]# pkill vsftpd
    [root@wyw-10 ~]# killall vsftpd
    
    # 2.使用pkill踢出从远程登录到本机的用户,终止pts/0上所有进程, 并且bash也结束(用户被强制退出)
    
    image.png

    二、管理后台进程

    1.什么是后台进程

    通常进程都会在终端前台运行,关掉终端后,进程也就跟着结束。如果将进程放入后台运行,就算关掉终端,放入后台的程序也依然会运行。后台进程即就是将前台运行的进程放到后台,且进程依然运行的过程。

    2.使用screen工具将前台运行的进程放入后台
    # 1.先安装screen
     [root@wyw-10 ~]# yum install screen
    
    # 2.开启一个screen窗口,指定名称
    
    开启screen窗口
    # 3.在screen窗口执行任务即可
    [root@wyw-10 ~]# systemctl start vsftpd
    [root@wyw-10 ~]# ps aux |grep vsftpd
    root      97865  0.0  0.1 127636  1172 pts/0    S+   15:49   0:00 screen -S vsftpd
    root      97866  0.0  0.1 127768  1408 ?        Ss   15:49   0:00 SCREEN -S vsftpd
    root      98097  0.0  0.0  53276   576 ?        Ss   15:54   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
    
    # 4.平滑的退出screen,但不会终止screen中的任务
    使用ctrl+a+d退出screen,如果要真正退出,则需要exit,才算真正的关闭了screen
    
    # 5.查看当前运行的screen与哪些
    [root@wyw-10 ~]# screen -list
    
    # 6.进入正在运行的screen
    screen+ -r +名称/PID号
    

    四、进程的优先级

    1.什么是优先级

    优先级指的是优先享受资源

    2.使用nice和renice配置优先级
    • 1)nice

    nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
    nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。

    使用top或者ps命令查看进程的优先级
    (1)使用top可以查看nice优先级。 NI: 实际nice级别,默认是0。 PR: 显示nice值,-20映射到0,+19映射到39

    top查看nice优先级
    (2)使用ps查看进程优先级
    ps查看优先级
    nice指定程序的优先级
    语法格式:nice -n+优先级数字+进程名程
    # 1.开启vim并且指定优先级为-10
    [root@wyw-10 ~]# nice -n -10 vim &
    [1] 99169
    
    # 2.查看该进程的优先级情况
    [root@wyw-10 ~]# ps axo pid,command,nice |grep 99169
     99169 vim                         -10
    
    • 2)renice

    renice命令修改一个正在运行的进程优先级
    语法格式:renice -n+优先级数字+进程pid

    #1.查看sshd进程当前的优先级状态
    [root@wyw-10 ~]# ps axo pid,command,nice |grep sshd
      7380 /usr/sbin/sshd -D             0
     97119 sshd: root@pts/0              0
    
    #2.调整sshd主进程的优先级
    [root@wyw-10 ~]# renice -n -20 7380
    7380 (process ID) old priority 0, new priority -20
    
    # 3.调整完成后,使用exit退出
    
    #4.当再次登陆sshd服务,会由主进程fork子进程(那么子进程会继承主进程的优先级)
    [root@wyw-10 ~]# ps axo pid,command,nice |grep sshd
      7380 /usr/sbin/sshd -D           -20
     99710 sshd: root@pts/0            -20
    

    五、系统平均负载

    1.什么是平均负载

    平均负载其实就是单位时间内的活跃进程数。(处于运行+处于等待运行+不可中断的进程)

    2.平均负载和cpu使用率的关系

    平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。
    而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。

    3.如何查看平均负载

    使用stress、mpstat、pidstat等工具,查看平均负载的使用率
    stress 是 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
    mpstat 是多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
    pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。

    • 场景一:CPU密集型进程

    1.首先,我们在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景

    [root@wyw-10 ~]# stress --cpu 1 --timeout 800
    

    2.接着,在第二个终端运行 uptime 查看平均负载的变化情况

    用watch -d查看

    3.最后,在第三个终端运行 mpstat 查看 CPU 使用率的变化情况


    image.png

    PS:单核CPU只有一个all和0

    • 场景二:I/O密集型进程

    1.首先还是运行 stress 命令,但这次模拟 I/O 压力,即不停地执行 sync

    [root@wyw-10 ~]# stress --io 2 timeout 600s
    

    2.然后在第二个终端运行 uptime 查看平均负载的变化情况


    image.png

    3.最后第三个终端运行 mpstat 查看 CPU 使用率的变化情况


    image.png
    4.使用pidstat查看导致iowait升高的进程
    pidstat查询
    • 场景三:大量进程的场景

    当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。

    1.首先,我们还是使用 stress,但这次模拟的是 4 个进程

    [root@wyw-10 ~]# stress -c 4 --timeout 800
    

    2.由于系统只有 1 个 CPU,明显比 4 个进程要少得多,因而,系统的 CPU 处于严重过载状态


    查看状态

    3.然后,再运行 pidstat 来看一下进程的情况


    每5s输出一组数据

    通过上面三个案例得知
    平均负载提供了一个快速查看系统整体性能的手段,反映了整体的负载情况,但是,平均负载有可能是CPU密集导致的,也有可能是I/O密集导致的。

    相关文章

      网友评论

        本文标题:Linux进程管理 day22

        本文链接:https://www.haomeiwen.com/subject/agunsctx.html