作为一个例子,我在我的linux服务器上安装了一个程序调用./foo install。但是,这个./foo程序会占用大量内存和CPU资源。
由于./foo程序是由其他服务器通过ssh连接执行的频率,我想控制./foo用法以防止我的服务器过载。
我正在寻找一个本地FIFO队列工具(监听器)来处理所有./foo执行。
e.g。
runJob ./foo& runJob ./foo& runJob ./foo&
结果,虽然./foo是并行执行的,但我想要队列工具(例如在这种情况下为runJob)来处理FIFO序列中的作业执行。
Linux中是否有这样的工具?
由于
答案 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
进程会挂起并等待它。