问题标签 [job-control]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5586 浏览

c - 使用 C 语言在 linux 中进行作业控制

我知道的:

当一个进程正在运行时,我可以按“CTRL + Z”并暂停它。withbgfg命令我可以在“后台”或“前台”模式下运行它。

我在问什么:

有没有办法暂停进程,将其发送到 C 中的后台或前台运行?

编辑: 我有进程ID。例如,我想将该过程发送到后台。

0 投票
2 回答
954 浏览

c - Linux 是否允许将进程组 ID 重新分配给进程?

假设 pidX是进程组的领导者并X终止,但进程组中的其他进程仍在运行(以X它们的 pgid 作为其 pgid)。Linux 会阻止将值X作为 pid 分配给新进程吗?

我问这个是因为 POSIX 允许的故障条件setsid

[EPERM] 调用进程已经是进程组长,或者调用进程以外的进程组ID与调用进程的进程ID匹配。

对于使用“随机”触发的进程组(即 shell)的代码来说,这个错误似乎是一个不可恢复的条件,这使得它更加可恶。我会假设任何针对正常质量水平的实现都会避免X在它仍用作 pgid 时重新分配为 pid,但我无法在任何地方找到此文档。

0 投票
2 回答
624 浏览

macos - 如何将终端切换到使用 NSTask 启动的进程的新子进程?

我用这里描述的方法做了一个伪终端:http: //lists.apple.com/archives/student-dev/2005/Mar/msg00019.html

终端本身运行良好。无论如何,问题是终端无法切换到子进程。例如,我使用 启动bashNSTask如果我ftp在 中执行bash,它会自动停止。

如果我尝试继续ftpwith fg,它会安静地终止。(我用活动监视器检查了这个)

我认为它需要更多的基础设施(完成伪终端)才能将控制权切换到子进程。这样做需要什么?

0 投票
2 回答
352 浏览

bash - Bash 作业控制 - 您可以在不先终止的情况下终止列表中的第二个命令吗?

如果我在 bash 提示符下发出这个: $ cmd_1 ; cmd_2

cmd_1 在前台。我可以在不停止 cmd_1 的情况下阻止 cmd_2 运行吗?我要等到 cmd_1 完成,此时 cmd_2 将启动,然后为时已晚。

我认为这是不可能的,但也许有工作控制?

-Z $ bg 是否将两个命令都推送到 bg 中?相反, cmd_1 是否去 bg 并且 cmd_2 是(在哪里?“待定背景?”像@ cmd?)仍在等待 cmd_1 退出?

这些命令不是有条件地调用的,比如“cmd_1 && cmd_2”,这些命令也不是在调用时作为背景的。cmd_1 正在 fg 中运行,cmd_2 尚未执行。

这里的问题是 cmd_1 需要很长时间才能完成, cmd_2 具有破坏性,我真的不想中断并重新执行 cmd_1 。我只想 cmd_1 完成并且 cmd_2 根本不运行。

我可以通过将 cmd_2 移动到 cmd_2.sav 直到 cmd_1 完成并导致“-bash: cmd_2: command not found”导致 cmd_2 失败,但我希望有一个更优雅的解决方案。在 cmd_1 完成之前,其他人可能会使用 cmd_2。(是的,我可以将 cmd_2.real 包装在 cmd_2 包装器中,并带有用户测试或类似的东西,但这种方式很疯狂)。

0 投票
2 回答
3237 浏览

linux - Linux 中的作业控制 - 想要将控制权交还给终端

我需要一些有关 linux 中作业控制的帮助。

我从终端运行我的程序,就像这样

然后我的程序/进程作为后台进程运行。

过了一会儿(比如说 5 秒),我输入fg以将我的进程置于前台。

过了一会儿(比如说 5 秒),我想让我的程序回到后台进程,把 bash 程序作为前台进程,这样我就可以继续使用终端了。

这是我所做的:

  1. 启动我的 pprogram 时,我使用tcgetpgrp函数获取前台进程(bash 程序)的组进程 ID。
  2. 然后我等到我的进程是前台进程。我使用tcgetpgrp(STDIN__FILENO).
  3. 然后我等待〜5秒
  4. 使用tcsetpgrp我将我在上面第 1 点中得到的过程放在前台。

问题是,我可以看到我的进程放在后台,bash 程序放在前台,但我无法在终端中输入命令。bash 没有“返回”,它仍在等待或休眠。

我知道我可以按下Ctrl-z然后bg但我不想使用它,因为按下Ctrl-之后z我的进程停止了,这不好,因为我正在运行“实时”控制应用程序。所以我想“立即”切换回终端而不停止或暂停我的程序。

对不起,如果我对我的问题的描述似乎令人困惑。

任何意见?

0 投票
4 回答
5801 浏览

hadoop - (Hadoop) MapReduce - 链式作业 - JobControl 不会停止

我需要链接两个 MapReduce 作业。我使用 JobControl 将 job2 设置为 job1 的依赖项。它工作,输出文件被创建!但它不会停止!在 shell 中,它保持这种状态:

我怎样才能阻止它?这是我的主要内容。

} }

0 投票
2 回答
790 浏览

python - 如何在 Python 中实现 shell 作业控制基础知识?

大多数现代 shell 都实现了基本的作业控制,例如挂起、恢复、中断和后台。

在 Python 中,如何使 shell 对 ^Z、fg、^C 和 bg(它们出现在 bash 中)敏感?或者我应该读什么?

0 投票
1 回答
6858 浏览

bash - 当bash无法断言作业控制时,如何告诉bash不要发出警告“无法设置终端进程组”和“此shell中没有作业控制”?

要创建一个新的交互式 bash shell,我调用bash -i. 由于我的环境问题,bash 无法断言作业控制(我在 GNU emacs 中使用 cygwin bash)并发出警告(“无法设置终端进程组”和“此 shell 中没有作业控制”)。- 我必须在我的环境中忍受禁用的工作控制,但我想摆脱警告:

我如何告诉 bash 不要断言作业控制并且不要发出这些警告?我显然仍然希望 shell 作为一个交互式的。

注意:我已经尝试set -m.bashrc,但是 bash 仍然会在启动时写出警告 - 该~/.bashrc文件可能会在 shell 尝试断言作业控制后执行。是否有一个命令行选项可以工作?

0 投票
0 回答
180 浏览

hadoop - 在第一个 hadoop 作业的输出上使用分布式缓存

我目前正在运行两个作业,因此 job2 依赖于 job1。我计划使用job1的输出并将其作为分布式缓存传递给job2。这将在 job2 中用作处理另一组数据的参考。我在完成作业配置的 2 个作业中编写了加载函数。然后我使 job2 依赖于 job1 并将其提交给 JobControl。问题是当我在 job2 的加载函数中使用分布式缓存时,该文件尚未创建,我将得到一个异常。我该如何处理?

我看不到任何可以重载而不是使用我的 load() 函数的 initialize() 等方法。我正在使用新的 API。

0 投票
3 回答
56 浏览

bash - 同时在后台运行我的程序的多个实例,这些返回标志是什么意思?

我刚刚启动了我的程序的一堆实例 (17) 来测试它们同时运行。这就是终端输出接近尾声的样子。

17 号是最后一个。我想知道,[16]- 和 [17]+ 是什么意思?只是他们是最后两个完成的过程吗?