将命令提交到本地Linux FIFO队列

时间:2015-12-08 21:01:05

标签: linux bash resources queue jobs

作为一个例子,我在我的linux服务器上安装了一个程序调用./foo install。但是,这个./foo程序会占用大量内存和CPU资源。

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

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

e.g。

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

结果,虽然./foo是并行执行的,但我想要队列工具(例如在这种情况下为runJob)来处理FIFO序列中的作业执行。

Linux中是否有这样的工具?

由于

1 个答案:

答案 0 :(得分: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进程会挂起并等待它。