nice命令

nice命令 #

nice命令用于以指定的优先级运行程序。它允许用户控制进程对CPU资源的使用优先级,从而影响系统的整体性能和响应性。

语法 #

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

常用选项 #

选项 描述
-n, --adjustment=N 使用指定的调整值N(默认为10)
--help 显示帮助信息
--version 显示版本信息

nice值范围 #

在Linux系统中,nice值的范围通常是从-20到19:

  • -20是最高优先级
  • 0是默认优先级
  • 19是最低优先级

普通用户只能增加nice值(降低优先级),只有root用户可以设置负的nice值(提高优先级)。

常见用法 #

1. 以默认调整值(10)运行命令 #

nice command

这会以比正常优先级低10的优先级运行命令。

2. 以指定的nice值运行命令 #

nice -n 15 command

这会以nice值15(较低的优先级)运行命令。

3. 以最低优先级运行命令 #

nice -n 19 command

4. 以较高优先级运行命令(需要root权限) #

sudo nice -n -10 command

这会以nice值-10(较高的优先级)运行命令。

5. 查看当前shell的nice值 #

nice

6. 运行长时间的后台进程 #

nice -n 19 long_running_command &

7. 运行CPU密集型任务 #

nice -n 19 cpu_intensive_task

与其他命令结合使用 #

1. 结合time命令测量性能 #

time nice -n 15 command

2. 结合nohup命令运行后台任务 #

nohup nice -n 19 command &

3. 使用不同nice值运行相同命令并比较 #

time nice -n 0 command
time nice -n 19 command

4. 在crontab中使用nice #

# 在crontab中以低优先级运行命令
0 2 * * * nice -n 19 /path/to/script.sh

实用示例 #

1. 以低优先级运行备份脚本 #

nice -n 19 tar -czf backup.tar.gz /home/user/data

2. 以低优先级运行编译任务 #

nice -n 15 make -j4

3. 以高优先级运行关键服务(需要root权限) #

sudo nice -n -10 /etc/init.d/critical_service start

4. 以低优先级运行数据处理脚本 #

nice -n 19 python3 data_processing.py

5. 以低优先级运行视频转码 #

nice -n 19 ffmpeg -i input.mp4 output.mkv

6. 以低优先级运行系统扫描 #

nice -n 19 find / -type f -name "*.log" -exec grep -l "error" {} \;

7. 以不同优先级运行多个实例 #

nice -n 19 command1 &
nice -n 10 command2 &
nice -n 0 command3 &

与renice的区别 #

  • nice命令用于以指定的优先级启动新进程
  • renice命令用于更改已经运行的进程的优先级

查看进程的nice值 #

可以使用以下命令查看进程的nice值:

# 使用ps命令
ps -o pid,ni,cmd -p PID

# 使用top命令
top -p PID

top命令的输出中,NI列显示进程的nice值。

注意事项 #

  1. 普通用户只能增加nice值(降低优先级),不能减少nice值(提高优先级)。

  2. 即使是root用户,也不能将nice值设置为小于-20或大于19的值。

  3. nice值只影响CPU调度优先级,不影响I/O优先级。对于I/O密集型任务,可以考虑使用ionice命令。

  4. nice值的效果取决于系统的调度策略。在某些情况下,nice值的影响可能不明显。

  5. 在多核系统上,nice值的影响可能不如在单核系统上明显。

提示 #

  • 使用nice命令可以帮助管理系统资源,确保重要任务获得足够的CPU时间
  • 对于长时间运行的后台任务,考虑使用较高的nice值(如15或19)
  • 对于交互式应用程序,保持默认nice值或使用较低的nice值
  • 在系统负载高的情况下,nice值的影响更加明显
  • 结合tophtop命令可以监控进程的nice值和资源使用情况
  • 在脚本中使用nice命令可以确保脚本不会过度消耗系统资源
  • 对于定期运行的任务(如cron作业),考虑使用nice命令降低其优先级