在Linux中,在有限的资源内运行一个进程

有没有一种方法可以在严格限制的资源(即cpu,内存,I / O)内运行一个进程(例如ls,du,find ..等),除了使用nice&ionice,因为我没有find它们在我的情况下足够有效。

我有一个生产服务器,有很多文件目录,需要被删除,移动,得到他们的总大小..等

过程控制比(重新)好:chrt还有一个更为极端的过程控制。 您可以将进程设置为SCHED_IDLE。 结合ionice IDLE应该做的工作。

有一个真正的设备映射器的目标,不幸的是没有进入主线内核,它给你更多的控制: ioband

另一个选项是:把这个过程放入虚拟机。 KVM中可以直接进行VFS访问,您可以精确地定义VM获得多lessI / O。

您可以使用taskset将进程组限制到特定的CPU,如果您的系统运行良好并将其最大化,将会有所帮助 – 但仍然可以运行得足够快,以便刷新VFScaching(如果存在问题的话)和VFScaching超出限制配额 – 但使用限制不会有帮助,因为它只是在用完时禁用新的进程。

真的,如果你想在后台慢慢地走树,那么你会写一些代码。

请注意, ionice使用可能会根据您指定的类别而有所不同; 在一个类似的情况下使用ionice'idle'class值为19的值对我很有帮助,而不会使CPU / IO增加太多

这个如何使用它:

 nice -n 19 'command' ionice -c 3 -p `ps aux | grep command | grep -v grep | awk {'print $2'}`