问题标签 [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.
bash - 为什么我不能在 bash 脚本中使用作业控制?
在脚本中你没有工作控制(并且试图打开它是愚蠢的)
这是我第一次听到这个,我仔细研究了作业控制(第 7 章)的 bash.info 部分,发现没有提到任何一个断言。[更新:手册页稍微好一点,提到了“典型”使用、默认设置和终端 I/O,但没有真正的理由说明作业控制对脚本特别不明智。]
那么为什么基于脚本的作业控制不起作用,是什么使它成为一种不好的做法(又名“愚蠢”)?
编辑:有问题的脚本启动一个后台进程,启动第二个后台进程,然后尝试将第一个进程放回前台,以便它具有正常的终端 I/O(就像直接运行一样),然后可以从脚本之外。不能对后台进程执行此操作。
正如另一个问题的公认答案所指出的,存在其他脚本可以解决该特定问题而无需尝试作业控制。美好的。被抨击的脚本使用了一个硬编码的工作编号——显然很糟糕。但我试图了解工作控制是否是一种从根本上注定要失败的方法。似乎它仍然可以工作......
bash - 我应该按什么顺序向正常关闭进程发送信号?
除非绝对必要,否则不要使用 kill -9 !SIGKILL 不能被捕获,因此被杀死的程序不能运行任何关闭例程来例如擦除临时文件。首先尝试 HUP (1),然后是 INT (2),然后是 QUIT (3)
我原则上同意SIGKILL
,但其余的对我来说都是新闻。kill
鉴于is发送的默认信号SIGTERM
,我希望它是正常关闭任意进程的最常见的预期信号。此外,我还看到SIGHUP
用于非终止原因,例如告诉守护进程“重新读取您的配置文件”。在我看来SIGINT
(与 Ctrl-C 相同的中断,对吗?)并没有得到应有的广泛支持,或者终止得相当不优雅。
鉴于这SIGKILL
是最后的手段——你应该将哪些信号以及以什么顺序发送到任意进程,以便尽可能优雅地关闭它?
如果可以的话,请用支持事实(超出个人偏好或意见)或参考来证实您的答案。
注意:我对包括考虑 bash/Cygwin 的最佳实践特别感兴趣。
编辑:到目前为止,似乎没有人提到 INT 或 QUIT,而且很少提到 HUP。是否有任何理由将这些包含在有序的进程终止中?
zsh - 无法将“X”放在右侧提示符以指示 Zsh 中的作业数
本文的代码对我不起作用。我已将其所有代码粘贴到我的 .zshrc 中。
我有以下内容.zshrc
它应该表明您是否有工作。但是,它不适合我。
我想在正确的提示符处加一个 X,表示您有工作正在运行。
如果您在 Zsh 中有多个工作,您如何获得显示 X 的正确提示?
bash - 在后台运行 lynx -dump?
我有一个mystuff
包含如下行的 bash 脚本
并且脚本工作正常,包括这部分,除非我以非交互方式运行它:
作业已停止。我发现猞猁是罪魁祸首。即使直接从 bash 提示符运行此命令也会导致作业立即停止:
为什么 lynx 不在后台运行?我怎样才能解决这个问题?
编辑:
我使用 lynx 是因为我不想解析原始 HTML。wget
和的区别在于lynx -dump
lynx 会渲染 HTML;它将隐藏所有标签,很好地排列文本等。
bash - 等待脚本中的 bash 后台作业完成
为了最大限度地提高 CPU 使用率(我在 EC2 中的 Debian Lenny 上运行),我有一个简单的脚本来并行启动作业:
我对这个可行的解决方案非常满意,但是我不知道如何编写仅在所有循环完成后才执行的进一步代码。
有没有办法控制这个?
linux - linux:杀死后台任务
如何杀死linux中最后一个产生的后台任务?
例子:
php - PHP 是否像 bash 一样具有作业控制功能?
PHP 是否支持 bash(分叉)中的与号之类的东西?假设我想同时在 2 个网页上使用 cURL,所以脚本不必等待第一个 cURL 命令完成,如何在 PHP 中实现这一点?在 bash 中是这样的:
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?
shell - 以编程方式启动一系列带有作业控制的流程
我有一系列 7 个进程来运行我开发的复杂 Web 应用程序。我通常像这样手动启动这些过程:
term.tail 是一个 fifo 管道,我让 tail 在需要时继续运行以查看这些进程的输出。
我想在我当前的 shell 中启动所有进程,但是一个典型的脚本(shell 或 ruby)在它自己的 shell 中运行。有解决办法吗?
我在 OSX 上的 iTerm2 中使用 zsh。
linux - 前台作业和后台作业的区别
在 Linux 中,前台作业和后台作业有什么区别?