例如,我在我的 Linux 服务器上有一个程序调用 ./foo install。但是,这个./foo 程序会消耗大量的内存和CPU 资源。
由于 ./foo 程序被其他服务器通过 ssh 连接执行的频率,我想控制 ./foo 的使用以防止我的服务器过载。
我正在寻找一个本地 FIFO 队列工具(监听器)来处理所有 ./foo 执行。
例如
运行作业./foo & 运行作业./foo & 运行作业./foo &
因此,虽然 ./foo 是并行执行的,但我希望队列工具(例如本例中的 runJob)以 FIFO 顺序处理作业执行。
Linux有这样的工具吗?
谢谢
最佳答案
如果 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
进程挂起并等待为了它。
关于linux - 向本地 Linux FIFO 队列提交命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165931/