Linux系统命令:用于控制Linux新启动进程的优先级的工具nice详解

目录

一、概述

二、nice 命令的作用

三、用法

1、nice 命令的语法

2、参数解释

3、nice 常见选项

4、获取帮助

四、优点

1. 资源分配公平性

2. 系统稳定性

3. 灵活性

4. 易于使用

五、缺点

1. 权限限制

2. 效果有限

3. 无法实时调整

4. 不适用于所有场景

六、 nice 使用示例

1. 以默认 nice 值启动一个命令

2. 以特定的 nice 值启动一个命令

3. 使用 -n 选项调整 nice 值

七、其他


一、概述

        nice 命令在 Linux 系统中用于控制新启动进程的优先级,即进程的 nice 值。通过调整 nice 值,可以影响进程在系统调度器中的执行顺序,从而影响其获取 CPU 时间的能力。

二、nice 命令的作用

        nice 命令允许用户在启动一个新的进程时指定一个不同的 nice 值。Nice 值是一个从 -20(最高优先级)到 19(最低优先级)的整数值,默认情况下大多数进程的 nice 值为 0。较高的 nice 值意味着较低的优先级,而较低的 nice 值则意味着较高的优先级。

三、用法

1、nice 命令的语法

nice [选项] [nice值] 命令 [参数]

2、参数解释

    如下为参数的介绍:

- nice值:指定进程的 nice 值。如果未提供,则默认为 0。

- 命令:要执行的命令。

- 参数:传递给命令的参数。

3、nice 常见选项

-n 或 --adjustment:指定 nice 值的增量或减量。这可以用来相对于默认的 nice 值增加或减少优先级。

-h 或 --help:显示帮助信息。

-V 或 --version:显示版本信息。

4、获取帮助

使用如下命令获取帮助:

nice --help

实际操作如下图所示:

帮助信息

四、优点

1. 资源分配公平性

        nice 命令允许用户以“友好”的方式启动进程,通过指定 nice 值来控制进程在 CPU 上获得执行时间的机会。这有助于防止某个进程占用过多的 CPU 资源,从而影响其他进程的运行。

2. 系统稳定性

        通过调整进程的优先级,nice 命令可以帮助维护系统的稳定性。高优先级的进程(如系统服务)可以确保及时获得 CPU 时间,而低优先级的进程(如后台任务)则可以在系统负载较高时让出 CPU 资源。

3. 灵活性

   nice 命令提供了灵活的优先级调整机制。用户可以根据需要指定不同的 nice 值来启动进程,或者使用 renice 命令来修改已经运行的进程的优先级。

4. 易于使用

   nice 命令的语法简单明了,易于学习和使用。用户只需指定 nice 值和要运行的命令即可。

五、缺点

1. 权限限制

   普通用户只能将进程的 nice 值设置为正值或默认值(通常为 10),而只有超级用户(root)才能将 nice 值设置为负值。这种权限限制虽然有助于防止恶意用户滥用资源,但也限制了普通用户对进程优先级的调整范围。

2. 效果有限

   虽然 nice 命令可以调整进程的优先级,但它并不能完全控制进程在 CPU 上的执行时间。当系统负载非常高时,即使设置了较高的优先级,进程也可能无法及时获得 CPU 时间。

3. 无法实时调整

   nice 命令只能在启动进程时设置优先级,而无法实时调整已经运行的进程的优先级。虽然可以使用 renice 命令来修改已经运行的进程的优先级,但这需要知道进程的 PID(进程 ID),并且可能涉及到额外的操作和管理成本。

4. 不适用于所有场景

   nice 命令适用于需要调整 CPU 资源分配的场景,但并不适用于所有类型的资源分配问题。例如,对于内存、磁盘 I/O 等其他资源的分配问题,nice 命令无法提供直接的解决方案。

        因此,nice 命令在调整进程优先级方面具有一定的优点,但也存在一些限制和不足之处。在实际应用中,我们可以根据具体需求和场景来选择合适的工具和方法来管理系统资源。

六、 nice 使用示例

1. 以默认 nice 值启动一个命令

   使用如下命令:

   nice ./myprogram

   这里 ./myprogram 将以默认的 nice 值(通常是 0)启动。

      

2. 以特定的 nice 值启动一个命令

        使用如下命令:

   nice -5 ./myprogram 

        这里 ./myprogram 将以 nice 值为 5 启动,这意味着它将比默认 nice 值的进程更低优先级。

       实际操作如下图:

设置nice值

        可以看出 monitor_cpu1.sh 的nice值为5.

        其中,脚本的代码如下:

#!/bin/bash

current_datetime=$(date)
echo "当前日期和时间(默认格式): $current_datetime"

while true; do
    # 使用 top 命令获取所有进程的CPU使用率
    # -b 表示 batch 模式,-n 1 表示只获取一次数据
    # 使用 awk 进行数据处理,查找 CPU 使用率大于80%的进程
    top -b -n 1 | awk '
        BEGIN {
            # 设置输出字段的宽度,防止输出混乱
            FS=" ";
            OFS=" ";
        }
        /%Cpu/{
            # 跳过标题行
            next
        }
        {
            # 获取进程的PID、用户、优先级、NI、虚拟内存大小、物理内存大小、状态、%CPU、%MEM、时间和命令
            pid=$1; user=$2; pri=$3; ni=$4; vsize=$5; rss=$6; state=$7; cpu=$9; mem=$10; time=$11; command=$12
        if(cpu > 100){

            }
        else if (cpu > 10) {
                # 如果 CPU 使用率超过80%,打印相关信息
                print "High CPU usage detected:"
                print "PID: " pid ", User: " user ", %CPU: " cpu "%"
                print "Command: " command
                print ""
            }
        }
    '
    sleep 5 # 每隔5秒检查一次
done

3. 使用 -n 选项调整 nice 值

   使用如下命令:

   nice -n 10 ./myprogram  

   这里 ./myprogram 将以 nice 值为 10 启动,进一步降低了它的优先级。

七、其他

        1、权限问题:虽然任何用户都可以使用 nice 命令来降低进程的优先级(即增加 nice 值),但只有超级用户(root)才能降低 nice 值来提高进程的优先级。

        2、系统负载:在系统负载较高的时候,适当提高某些后台任务的 nice 值可以改善用户体验,因为它可以让更重要的前台任务得到更多的 CPU 时间。

        3、进程调度:尽管 nice 值会影响进程的优先级,但它并不是唯一决定进程调度的因素。Linux 内核还考虑了其他因素,如 I/O 优先级、实时性要求等。

通过合理使用 nice 命令,可以有效管理系统的资源分配,确保重要任务得到及时处理,同时避免非关键任务占用过多的系统资源。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值