一、进程优先级

Linux进程调度及多任务

  每个cpu(或者cpu核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的cpu及核心数量。Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的印象;

相对优先级nice

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

  SCHED_OTHER 调度策略运行的进程的相对优先级成为进程的 nice 值,可以有40中不同级别的 nice 值;

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

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

查看进程的nice级别

  1.使用top查看nice级别

NI:实际nice级别

PR:将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

  2.使用ps查看nice级别

[root@centos6- ~]# ps axo pid,command,nice --sort=-nice
PID COMMAND NI
/sbin/init
/sbin/mingetty console
rpcbind
dbus-daemon --system
login -- root
/sbin/mingetty /dev/tty2
/usr/bin/python /usr/bin/ss
sshd: root@pts/

[root@centos6- ~]# ps axo pid,command,nice,cls --sort=-nice
PID COMMAND NI CLS
/sbin/init TS
/sbin/mingetty console TS
rpcbind TS
dbus-daemon --system TS
login -- root TS
/sbin/mingetty /dev/tty2 TS
/usr/bin/python /usr/bin/ss TS
sshd: root@pts/ TS
-bash TS
/sbin/dhclient -H lcq-cento TS
sshd: root@pts/ TS
sshd: root@notty TS

  TS 表示该进程使用的调度策略为 SCHED_OTHER

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

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

[root@centos6- ~]# nice -n  sleep  &
[]
[root@centos6- ~]# ps axo command,pid,nice |grep sleep
sleep
grep sleep
[root@centos6- ~]#

[root@centos6- ~]# nice -n - service httpd start
[root@centos6- ~]# ps axo pid,command,nice,cls | grep httpd
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS
/usr/sbin/httpd - TS

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

1.使用top更改nice 级别

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

2.使用shell更改nice级别

二、作业控制 jobs

  作业控制是一个命令行功能,允许一个shell 实例运行和管理多个命令。

  如果没有作业控制,父进程fork() 一个字进程后,将sleeping ,直到子进程退出。

  使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行期间返回接受其他命令。

foreground,background,and contrlling terminal

foreground:  前台进程是在终端中运行的命令,该终端为进程的控制终端,前台进程接收键盘生产的输入和信号,并允许从终端读取或写入到终端。

background:  后台进程没有控制终端,它不需要终端的交互。

示例1:

[root@linux ~]# sleep  &                        //运行程序(时),让其在后台执行
[root@linux ~]# sleep //^Z,将前台的程序挂起(暂停)到后台
[]+ Stopped sleep

[root@linux ~]# ps aux |grep sleep
root 0.0 0.0 pts/ S : : sleep
root 0.0 0.0 pts/ T : : sleep

[root@linux ~]# jobs                                     //查看后台作业
[]- Running sleep &
[]+ Stopped sleep

[root@linux ~]# bg %                                //让作业2在后台运行
[root@linux ~]# fg % //将作业1调回到前台 [root@linux ~]# kill % //kill 1,终止PID为1的进程

预览:

[root@linux ~]# (while :; do date; sleep ; done) &  //进程在后台运行,但输出依然在当前终端

[root@linux ~]# (while :; do date; sleep ; done) &>/dev/null &

& 放在命令的最后才是后台符

示例2:如何管理远程主机

[root@linux ~]# ssh 10.18.40.100
[root@www ~]# yum -y install screen //第一次
[root@www ~]# screen -S install_apache

断网后,重新连接

[root@www ~]# screen -list
There are screens on:
.install_nginx (Detached)
.install_apache (Detached)
Sockets in /var/run/screen/S-root. [root@www ~]# screen -r

Linux基础进程管理优先级的更多相关文章

  1. Linux基础进程管理

    一.进程 了解如进程的: • PID,PPID • 当前的进程状态 • 内存的分配情况 • CPU和已花费的实际时间 • 用户UID,他决定进程的特权 (一).静态查看进程 # ps axu | le ...

  2. Linux:进程管理

    Linux:进程管理 进程间通信 文件和记录锁定. 为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放.这是UNIX为共享 ...

  3. Linux操作系统的进程管理

    Linux操作系统的进程管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程相关概念 1>.进程概述 内核的功用: 进程管理.文件系统.网络功能.内存管理.驱动程序. ...

  4. linux 系统管理--进程管理

    目录 linux 系统管理--进程管理 一.进程基本概述 二.监控进程状态 三.进程的优先级[进阶] 四.企业案例,Linux假死是怎么回事 五.后台进程管理 六.系统平均负载[进阶] linux 系 ...

  5. .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控

    一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...

  6. Linux操作系统的进程管理和作业管理

    Linux操作系统的进程管理和信号 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.lsof命令详解 1>.lsof概述 list open files查看当前系统文件的工 ...

  7. Linux内核——进程管理与调度

    进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ...

  8. 【linux之进程管理,系统监控】

    一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...

  9. Linux守护进程管理利器——Supervisor

    Supervisor是采用 Python(2.4+) 开发的,它是一个允许用户管理 基于 Unix 系统进程的 Client/Server 系统,提供了大量功能来实现对进程的管理.安装: yum in ...

随机推荐

  1. PyCharm2018 汉化&激活

    一.汉化 将下载好的resources_cn_PyCharm_2018.1_r2.jar 放入pycharm 的lib 目录中,启动app即可 下载链接: https://pan.baidu.com/ ...

  2. ElasticStack学习(五):ElasticSearch索引与分词

    一.正排索引与倒排索引 1.什么是正排索引呢? 以一本书为例,一般在书的开始都会有书的目录,目录里面列举了一本书有哪些章节,大概有哪些内容,以及所对应的页码数.这样,我们在查找一些内容时,就可以通过目 ...

  3. abview查找范例时说 NI服务器未定位 这是怎么回事?

    NI服务定位器未运行在使用labview查找范例时,出现“NI服务定位器未运行”的对话框,而后不能够打开范例.有以下方法.方法一:是防火墙服务禁用造成的,在防火墙规则里面找,把和NI相关的都允许. 方 ...

  4. mpvue开发微信小程序

    前段时间,美团开源了mpvue这个项目,使得我们又多了一种用来开发小程序的框架选项.由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一 ...

  5. 使用nexus搭建npm私服

    第一步,下载nexus 下载链接: https://pan.baidu.com/s/1GOYi2M3nT4Wcy7JEYmnqdA 提取码: a9hf 第二步,解压缩 我下载的是nexus-3.16. ...

  6. .net core2学习笔记

    在Linux上安装完netcore的sdk后,发现每次重新登录dotnet命令都会失效,咨询完同事后才知道之前的设置只是临时变量,需要vim /etc/profile   编辑这个文件,把环境变量写入 ...

  7. SpringBoot 2.0.3 源码解析

    前言 用SpringBoot也有很长一段时间了,一直是底层使用者,没有研究过其到底是怎么运行的,借此机会今天试着将源码读一下,在此记录...我这里使用的SpringBoot 版本是  2.0.3.RE ...

  8. vmware + opensuse windows如何远程登录到suse上

    vmware我还是比较偏向7.1.4版本,其他版本装在win7上似乎有点问题.windows平台下,使用vmware + opensuse的网络配置过程如下:      1. 装完vm后,会在本地连接 ...

  9. 设计模式——通用泛型单例(普通型和继承自MonoBehaviour)

    单例模式是设计模式中最为常见的,不多解释了.但应该尽量避免使用,一般全局管理类才使用单例. 普通泛型单例: public abstract class Singleton<T> where ...

  10. Hybrid App从概念到实战

    最近一直在准备找工作,看了很多公司的招聘介绍,有相当一部分直接写:熟悉 Hybrid App 开发加分!正好,我司开发的就有这种 Hybrid App--使用WebViewJavascriptBrid ...