linux - 向本地 Linux FIFO 队列提交命令

标签 linux bash resources queue jobs

例如,我在我的 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/

相关文章:

Linux Sys_execve 不会在汇编中运行

linux - Bash:确定部分删除的内容

PHP 更快的素数生成器

linux - Bash:使用 bash 脚本的 Head & Tail 行为

android - 如何使用android中的资源使用可重用的gui元素/小部件

c - 我的错误信息是什么意思?

linux - 无法连接到 Azure Ubuntu VM - 公钥被拒绝

regex - 使用 grep SQL 数字数据类型搜索

azure - 需要仅为 VM 的标签部署 Azure 策略

android - 如何在 Android Studio 中将英语翻译成日语