【问题标题】:Creating suspended background jobs创建挂起的后台作业
【发布时间】:2016-12-13 21:11:59
【问题描述】:

使用 Bash,如何在挂起/停止状态下启动后台作业?

我必须执行大约一百个内存密集型、耗时的进程。按顺序运行它们需要很长时间:

for i in inputs-list; do
  memory-hog $i
done

同时运行它们会杀死我的机器:

for i in inputs-list; do
  memory-hog $i &
done

我希望我的进程作为后台暂停作业启动;然后我会使用bg 来恢复其中的一些,同时监控内存消耗。

【问题讨论】:

  • 也许 man xargs 并搜索 -P(进程数)可能会对您有所帮助。无论如何,您都会为此而发疯,要么多借一些电脑,要么寻找像GNU parrallel 这样的工具。祝你好运!
  • 使用 GNU Parallel 控制一次运行的数量并根据内存压力进行调度。

标签: bash sh background-process jobs


【解决方案1】:

在后台启动每个进程然后发送SIGSTOP:

for i in inputs-list; do
  memory-hog $i &
  kill -SIGSTOP $!
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2015-10-09
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多