Linux进程管理——进程前后台(优先级)以及作业控制等

一、进程前后台与状态

二、/proc与/sys介绍

三、 Linux作业控制

一、进程前后台与状态

1、前台进程和后台进程

  • 前台进程
    在 shell 提示处理打入命令后,创建一个子进程,运行命令, Shell 等待命令退出,然后返回到对用户给出提示符。这条命令与 Shell 异步运行,即在前台运行,用户在它完成之前不能执行别一个命令 。

  • 后台进程
    在 Shell 提示处打入命令,若后随一个 &, Shell 创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。“后台进程必须是非交互式的”

2、进程状态

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

3、进程优先级

Linux 进程调度及多任务:每个CPU在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程和线程数可以超出实际可用的CPU及核心数量。

相对优先级 nice:由于不是每个进程都与其他进程同样重要,可告知进程调度程序为不同的进程使用不同的调度策略。常规系统上运行的大多数进程所使用的调度策略为 SCHED_OTHER (也称为SCHED_NORMAL),但还有其它一些调度策略用于不同的目的。SCHED_OTHER 调度策略运行的进程的相对优先级称为进程的 nice 值,可以有40种

不同级别的nice值。

nice 值越: 表示优先级越
例如+19,该进程容易将CPU 使用量让给其他进程。

nice 值越: 表示优先级越
例如-20,该进程更不倾向于让出CPU。

4、查看进程的nice级别

(1)、使用top查看nice级别

  • NI: 实际nice级别

  • PR: 将nice级别显示为映射到更大优先级队列
    eg:-20映射到0,+19映射到39
    Linux进程管理——进程前后台(优先级)以及作业控制等_第1张图片

(2)、使用ps查看nice级别

pid,command,nice可自由结合

[root@nebulalinux03 ~]# ps axo pid,command,nice --sort=-nice

[root@192 /]# ps axo pid,command,nice --sort=-nice
   PID COMMAND                      NI
    36 [khugepaged]                 19
    35 [ksmd]                        5
     1 /sbin/init                    0
     2 [kthreadd]                    0
     3 [migration/0]                 -

[root@nebulalinux03 ~]# ps axo pid,command,cls --sort=-nice

[root@192 /]#  ps axo pid,command,cls --sort=-nice
   PID COMMAND                     CLS
    36 [khugepaged]                 TS
    35 [ksmd]                       TS
     1 /sbin/init                   TS
     2 [kthreadd]                   TS
     3 [migration/0]                FF

[root@nebulalinux03 ~]# ps axo pid,cls --sort=-nice

[root@192 /]# ps axo pid,nice --sort=-nice
   PID  NI
    36  19
    35   5
     1   0
     2   0
     3   -
  • TS 表示该进程使用的调度策略为SCHED_OTHER

  • 启动具有不同nice级别的进程

  • 启动进程时,通常会继承父进程的 nice级别,默认为0。

5、更改现有进程的nice级别

(1)、使用top更改nice级别

r 调整进程的优先级 (-20高) ---0--- (19低)

(2)、使用shell更改nice级别

[root@192 /]# sleep 7000 &
[1] 2536
[root@192 /]# renice -2010089
Usage:
 renice [-n] priority [-p|--pid] pid  [... pid]
 renice [-n] priority  -g|--pgrp pgrp [... pgrp]
 renice [-n] priority  -u|--user user [... user]
 renice -h | --help
 renice -v | --version

二、/proc与/sys介绍

1、/proc 正在运行的内核信息映射

  • 主要输出: 进程信息
  • 内存资源信息
  • 磁盘分区信息等等

2、/sys 硬件设备的驱动程序信息

  • sysfs是一种基于ram文件系统和proc一样。

  • Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其实,就是在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等。

[root@192 /]# cd sys/
[root@192 sys]# ls
block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power

三、 Linux作业控制

shell控制的是作业,而不是进程,shell还可以分前后台对作业进行控制。
1、进程和作业的区别:

  • 区别:进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。

  • 关系:一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。

shell控制的是作业,而不是进程,shell还可以分前后台对作业进行控制。

2、什么是作业

  • 一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令

  • 作业控制指的是:控制正在运行的进程的行为,比如:启动停止强制终止恢复以及异步运行作业的这些功能,让shell可以在子进程运行期间返回接受其他命令。

  • 一般而言,进程与作业控制相关联时,才被称为作业。

  • shell分前后台控制的不是进程,而是作业或者进程组,一个前台只能运行一个进程组或一个作业,而一个后台可以运行多个进程组和多个作业。

查看被挂起的进程( jobs )

[root@192 sys]# jobs
[1]+  Running                 sleep 7000 &  (wd: /)

复到前台继续运行( fg )

[root@192 sys]# fg
sleep 7000      (wd: /)

恢复到后台继续运行( bg)

[root@192 sys]# bg %2 //让作业2在后台运行

你可能感兴趣的:(Linux进程管理)