如何在终端窗口中限制命令?

To *_* Do 9 cpu-load memory-usage image-processing

我需要同时运行convert大量图像。命令花了很长时间,但这并没有打扰我。

问题是该命令使我的计算机在命令运行时无法使用(大约 15 分钟)。

那么是否可以通过直接从命令行限制命令的资源(处理器和内存)来限制命令?这只有在我在按下之前在同一行添加一些东西时才能起作用,Enter因为一旦我开始这个过程,计算机就会变慢,以至于不可能切换到“系统监视器”并降低优先级。

编辑:top 和 iotop 结果

我设法运行topsudo iotop >iotop.txt在执行这些转换操作之一的同时。(生成的iotop.txt文件难以阅读)

上榜结果:

   PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令           
14275 用户名 20 0 4043m 3.0g 1448 D 7.0 80.4 0:16.45 转换 

iotop 的结果:

[?1049h[1;24r(B[m[4l[?7h[?1h=[39;49m[?25l[39;49m(B[m[H[2JTotal DISK READ): 1269.04 K/s | 总磁盘写入] :[59G0.00 B/s
(B[0;7m TID PRIO 用户磁盘读磁盘写交换(B[0;1;7m IO>(B[0;7m COMMAND [3;2H(B[m2516 be/4 username 350.08 K/s 0.00 B/ s 0.00 % 0.00 % 时代精神-数据中心
 7394 be/4 用户名 568.88 K/s 0.00 B/s 77.41 % 0.00 % --rendere~.530483991[5;1H14275 空闲用户名 350.08 K/s 0.00 B/s 37.40 B/s 37.49 % .pdf % 转换 .pdf ;2H2048 be/4 root[6;24H0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/3:2]
[5G1 be/4 root[7;24H0.00 B/s 0.00 B/s 0.00 % 0.00 % init

此外,即使在该过程结束后,计算机也不会恢复到先前的性能。我通过跑步找到了解决这个问题的方法,sudo swapoff -a然后是sudo swapon -a

Jim*_*ter 12

man nice,如果您需要 I/O 节流man ionice

让我们看一些简单的例子。

限制 CPU 使用率:

you@box:/$ nice -n 10 /usr/bin/convert blah.gif blah.jpg
Run Code Online (Sandbox Code Playgroud)

但是,根据您的描述,CPU 使用率几乎肯定不是您真正的问题。更有可能的是,您遇到了严重的 I/O 争用。

限制磁盘使用:

you@box:/$ ionice -c2 -n7 /usr/bin/convert blah.gif blah.jpg
Run Code Online (Sandbox Code Playgroud)

-c2是“尽力而为”,并且-n7是最低的“尽力而为”优先级。因此,与系统上的大多数其他事物相比,这将限制作业以降低 I/O 优先级。

you@box:/$ ionice -c3 /usr/bin/convert blah.gif blah.jpg
Run Code Online (Sandbox Code Playgroud)

-c3(不需要优先级)意味着“仅空闲”。作业设置为-c3ONLY 占用空闲的磁盘调度时间,对系统几乎没有任何影响 - 但可能会显着延长您的作业的执行时间,具体取决于系统其余部分的繁忙程度。


Jim*_*ter 5

哦,男孩,我刚刚抓住了这个......引用OP:

此外,即使在该过程结束后,计算机也不会恢复到先前的性能。我通过跑步找到了解决这个问题的方法,sudo swapoff -a然后是sudo swapon -a

好的,这意味着您耗尽了系统上的可用 RAM,这意味着您只是试图convert一次运行太多进程。我们需要查看您在生成时的实际语法convert以提供建议,但基本上,您需要确保不要尝试打开比您拥有可以轻松处理的 RAM 多的并发进程。

由于您说明了导致这种convert *.tif blah.pdf情况的原因,因此发生的情况是每个 TIF 的内容及其到 PDF 的转换都立即被塞入 RAM 中。你需要做的是把工作分开,这样就没有必要了。想到的一种可能性是做类似的事情find . -iname '*.tif' | xargs -I% convert % %.pdf,然后使用pdftk或类似的方法将所有单独的 pdf 粘合在一起。如果你真的想玩得开心,并且你有一个多核 CPU,这也让你有机会编写一个小脚本来批量运行转换n,其中n是你的核心数,并以更快的速度完成整个事情. :)

pdftk 操作方法:http : //ubuntuhowtos.com/howtos/merge_pdf_files (基本上归结为sudo apt-get install pdftk; pdftk *.pdf cat output merged.pdf