2015-12-08 18 views
0

作为示例,我在我的linux服务器上安装了一个程序调用./foo install。但是,这个./foo程序会消耗大量的内存和CPU资源。向本地Linux FIFO队列提交命令

由于./foo程序是由其他服务器通过ssh连接执行的频率,我想控制./foo的用法来防止我的服务器超载。

我正在寻找一个本地FIFO队列工具(侦听器)来处理所有./foo执行。

例如

runJob ./foo & runJob ./foo & runJob ./foo &

作为结果,尽管./foo被并行地执行,我想队列工具(例如runJob在这种情况下),以在FIFO序列中处理作业执行。

Linux中是否有这样的工具?

感谢

回答

0

如果FIFO是不是一个严格的要求,你可以很容易地与GNU parallel做到这一点:

for i in {1..10} 
do 
    parallel --gnu --semaphore --fg --id myjob -j 1 sleep 15 & 
done 

这开始于在大部分时间1工作(每用户名和作业--id计) 。

随着ps你会注意到一次只有一个sleep 15被执行,而其他parallel进程挂出并等待它。