问题标签 [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 投票
7 回答
43885 浏览

bash - 为什么我不能在 bash 脚本中使用作业控制?

这个对另一个问题的回答中,有人告诉我

在脚本中你没有工作控制(并且试图打开它是愚蠢的)

这是我第一次听到这个,我仔细研究了作业控制(第 7 章)的 bash.info 部分,发现没有提到任何一个断言。[更新:手册页稍微好一点,提到了“典型”使用、默认设置和终端 I/O,但没有真正的理由说明作业控制对脚本特别不明智。]

那么为什么基于脚本的作业控制不起作用,是什么使它成为一种不好的做法(又名“愚蠢”)?

编辑:有问题的脚本启动一个后台进程,启动第二个后台进程,然后尝试将第一个进程放回前台,以便它具有正常的终端 I/O(就像直接运行一样),然后可以从脚本之外。不能对后台进程执行此操作。

正如另一个问题的公认答案所指出的,存在其他脚本可以解决该特定问题而无需尝试作业控制。美好的。被抨击的脚本使用了一个硬编码的工作编号——显然很糟糕。但我试图了解工作控制是否是一种从根本上注定要失败的方法。似乎它仍然可以工作......

0 投票
7 回答
33760 浏览

bash - 我应该按什么顺序向正常关闭进程发送信号?

在对另一个问题这个答案的评论中,评论者说:

除非绝对必要,否则不要使用 kill -9 !SIGKILL 不能被捕获,因此被杀死的程序不能运行任何关闭例程来例如擦除临时文件。首先尝试 HUP (1),然后是 INT (2),然后是 QUIT (3)

我原则上同意SIGKILL,但其余的对我来说都是新闻。kill鉴于is发送的默认信号SIGTERM,我希望它是正常关闭任意进程的最常见的预期信号。此外,我还看到SIGHUP用于非终止原因,例如告诉守护进程“重新读取您的配置文件”。在我看来SIGINT(与 Ctrl-C 相同的中断,对吗?)并没有得到应有的广泛支持,或者终止得相当不优雅。

鉴于这SIGKILL是最后的手段——你应该将哪些信号以及以什么顺序发送到任意进程,以便尽可能优雅地关闭它?

如果可以的话,请用支持事实(超出个人偏好或意见)或参考来证实您的答案。

注意:我对包括考虑 bash/Cygwin 的最佳实践特别感兴趣。

编辑:到目前为止,似乎没有人提到 INT 或 QUIT,而且很少提到 HUP。是否有任何理由将这些包含在有序的进程终止中?

0 投票
2 回答
377 浏览

zsh - 无法将“X”放在右侧提示符以指示 Zsh 中的作业数

本文代码对我不起作用。我已将其所有代码粘贴到我的 .zshrc 中。

我有以下内容.zshrc

它应该表明您是否有工作。但是,它不适合我。

我想在正确的提示符处加一个 X,表示您有工作正在运行。

如果您在 Zsh 中有多个工作,您如何获得显示 X 的正确提示?

0 投票
4 回答
5741 浏览

bash - 在后台运行 lynx -dump?

我有一个mystuff包含如下行的 bash 脚本

并且脚本工作正常,包括这部分,除非我以非交互方式运行它:

作业已停止。我发现猞猁是罪魁祸首。即使直接从 bash 提示符运行此命令也会导致作业立即停止:

为什么 lynx 不在后台运行?我怎样才能解决这个问题?

编辑:

我使用 lynx 是因为我不想解析原始 HTML。wget和的区别在于lynx -dumplynx 会渲染 HTML;它将隐藏所有标签,很好地排列文本等。

0 投票
4 回答
45107 浏览

bash - 等待脚本中的 bash 后台作业完成

为了最大限度地提高 CPU 使用率(我在 EC2 中的 Debian Lenny 上运行),我有一个简单的脚本来并行启动作业:

我对这个可行的解决方案非常满意,但是我不知道如何编写仅在所有循环完成后才执行的进一步代码。

有没有办法控制这个?

0 投票
8 回答
167485 浏览

linux - linux:杀死后台任务

如何杀死linux中最后一个产生的后台任务?

例子:

0 投票
4 回答
445 浏览

php - PHP 是否像 bash 一样具有作业控制功能?

PHP 是否支持 bash(分叉)中的与号之类的东西?假设我想同时在 2 个网页上使用 cURL,所以脚本不必等待第一个 cURL 命令完成,如何在 PHP 中实现这一点?在 bash 中是这样的:

0 投票
1 回答
7131 浏览

bash - 如何从 /etc/inittab 启动 linux shell

我们曾经在 /etc/inittab 中有两个条目:

rcS 是一个 shell 脚本,它通常启动我们的应用程序,但在特殊情况下,我们调用“return”来终止它,这显然让 /bin/sh 接管了 tty,因为我们得到了一个 shell 提示,我们可以在其中进行一些维护。

现在 inittab 看起来像这样:

我们现在通过在 rcS 脚本中执行“/bin/bash -i”来启动 shell,因为我们不想总是运行通常从不使用的第二个 shell(由于内存限制)。

但是创建的 bash 不具有作业控制功能,这是非常有限的。

所以我的问题是,我是否可以像我们之前的解决方案中的 init 处理方式一样创建一个 shell(并可能终止 rcS 脚本),以便我再次获得一个具有作业控制的 shell?

0 投票
1 回答
160 浏览

shell - 以编程方式启动一系列带有作业控制的流程

我有一系列 7 个进程来运行我开发的复杂 Web 应用程序。我通常像这样手动启动这些过程:

term.tail 是一个 fifo 管道,我让 tail 在需要时继续运行以查看这些进程的输出。

我想在我当前的 shell 中启动所有进程,但是一个典型的脚本(shell 或 ruby​​)在它自己的 shell 中运行。有解决办法吗?

我在 OSX 上的 iTerm2 中使用 zsh。

0 投票
1 回答
3479 浏览

linux - 前台作业和后台作业的区别

在 Linux 中,前台作业和后台作业有什么区别?