shell_70.Linux调整谦让度

调整谦让度

1.nice 命令

(1)nice 命令允许在启动命令时设置其调度优先级。要想让命令以更低的优先级运行,只需用nice 命令的-n 选项指定新的优先级即可:

复制代码
$ nice -n 10 ./jobcontrol.sh > jobcontrol.out & 
[2] 16462 
$ 
$ ps -p 16462 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16462 1630 10 /bin/bash ./jobcontrol.sh 
$ 

注意,nice 命令和要启动的命令必须出现在同一行中。ps 命令的输出证实,谦让度(NI列)已经调整到了 10。

(2)nice 命令使得脚本以更低的优先级运行。但如果想提高某个命令的优先级,那么结果可能会让你大吃一惊:

复制代码
$ nice -n -5 ./jobcontrol.sh > jobcontrol.out & 
[2] 16473 
$ nice: cannot set niceness: Permission denied 
$ ps -p 16473 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16473 1630 0 /bin/bash ./jobcontrol.sh 
$ 

nice 命令会阻止普通用户提高命令的优先级。注意,即便提高其优先级的操作没有成功,指定的命令依然可以运行。

只有 root 用户或者特权用户才能提高作业的优先级。

(3)nice 命令的-n 选项并不是必需的,直接在连字符后面跟上优先级也可以:

复制代码
$ nice -10 ./jobcontrol.sh > jobcontrol.out & 
[2] 16520 
$ 
$ ps -p 16520 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16520 1630 10 /bin/bash ./jobcontrol.sh 
$ 

2.renice 命令

复制代码
$ ./jobcontrol.sh > jobcontrol.out & 
[2] 16642 
$ 
$ ps -p 16642 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16642 1630 0 /bin/bash ./jobcontrol.sh 
$ 
$ renice -n 10 -p 16642 
16642 (process ID) old priority 0, new priority 10 
$ 
$ ps -p 16642 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16642 1630 10 /bin/bash ./jobcontrol.sh 
$ 

(1)有时候,你想修改系统中已运行命令的优先级。renice 命令可以帮你搞定。它通过指定运行进程的 PID 来改变其优先级:

复制代码
$ ./jobcontrol.sh > jobcontrol.out & 
[2] 16642 
$ 
$ ps -p 16642 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16642 1630 0 /bin/bash ./jobcontrol.sh 
$ 
$ renice -n 10 -p 16642 
16642 (process ID) old priority 0, new priority 10 
$ 
$ ps -p 16642 -o pid,ppid,ni,cmd 
 PID PPID NI CMD 
 16642 1630 10 /bin/bash ./jobcontrol.sh 
$ 

renice 命令会自动更新运行进程的调度优先级。和 nice 命令一样,renice 命令对于非特权用户也有一些限制:

只能对属主为自己的进程使用 renice 且只能降低调度优先级。但是,root 用户和特权用户可以使用 renice 命令对任意进程的优先级做任意调整。

相关推荐
H_oRIZoN_11 分钟前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
小马同学-2 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
GeW2 小时前
RHCE备考别瞎学!按这个计划走,30天提高通过率,快速拿证
linux
Escalating_xu2 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊2 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
码农小韩2 小时前
Linux应用开发(六)——进程间通信
linux·linux驱动·嵌入式软件开发·嵌入式操作系统·linux应用
网安老伯2 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型
小祺先生3 小时前
mt7921 debian系统 如何安装驱动
运维·网络·debian
笨笨饿3 小时前
#138_解决Codex要五次回复的问题
linux·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
m0_459872923 小时前
Linux 系统基础
linux·运维·服务器