ls -l
如果我没记错的话,列出目录中的文件和文件夹并nice
根据优先级显示程序或文件。但是,这怎么nice -999 ls -l
办呢?我在终端中尝试了该命令并得到了如下结果:
total 16
-rw-r--r-- 1 muu muu 41 Jul 11 00:47 file.txt
drwx------ 2 muu muu 4096 May 4 17:12 Jam
-rw-r--r-- 1 muu muu 1841 May 4 17:18 Jam.zip
-rwxrwxrwx 1 muu muu 197 Jul 10 23:28 t.sh
但我不明白它到底在做什么?有人能解释一下吗?TIA
答案1
nice
:很好 - 运行具有修改后的调度优先级的程序
格式:nice [OPTION] [COMMAND [ARG]...]
所以nice -999 ls -l
应该是nice -9 ls -l
或nice 10 ls -l
左右,它在这里的作用是将命令nice
的级别设置ls
为给nice
定的值。但是在您的例子中,您使用一个不错的值,-999
其范围-20
是19
。
nice 命令的目的是确保给定命令以除其默认优先级之外的设定优先级运行。因此,假设ls
命令应以 nice 优先级运行,10
那么以 运行它将nice 1 ls
使其对其他进程更有利(即,它将让位于其他优先级较低的进程,可以这么说)
用法:
修改友善度:
nice -10 ls -l
修改为负面友善度:
nice --10 ls -l
# Note the use of "--"
修改已经运行的进程的优先级:
renice -12 -p <PID>
将已经运行的进程的优先级修改为负值:
renice 12 -p <PID>
来源:
man nice
答案2
解释
它ls
使用较低的优先级运行命令。
-999
等于,且因为良好等级是到-n 999
之间的数字,所以将被视为。-20
19
999
19
因此您的ls
命令正在以良好的级别运行19
。
测试
打开终端并运行:
$ ps -o pid,comm,nice | grep bash
8231 bash 0
您可以看到 bash 的 nice 级别是0
默认的,现在运行:
$ nice -999 bash
你将进入一个新的 bash。再次运行ps -o pid,comm,nice | grep bash
:
8231 bash 0
8273 bash 19
可以看到新的bash的nice等级等于19。(以最低优先级运行)。
答案3
Nice 不会“根据优先级显示”;它使用修改的优先级。该命令执行的操作与以 开头时完全相同ls -l
(即,它列出当前目录中的文件,包括权限、大小和访问时间等详细信息),但优先级降低,将其优先级提高 999)。
您还应该意识到,使用这么大的niceness值是没有意义的:无论如何它都会被限制在-20到19的范围内。