标签: job-control

一个已被否认并丢失其终端的进程的输出会发生什么?

如果我关闭启动某个进程的虚拟终端,输出是直接转到/dev/null,还是会以某种方式污染内存? 无论如何,我可以在此之后的任何时候获取输出以继续阅读吗?

[编辑]:那么,否认一个过程的那一刻是否有效地结束了我控制其输出的权力?

我还注意到,如果我否认一个停止的进程,起初一切似乎都很正常:它既不会终止,也不会显示在作业中。但是,如果我退出(并且我不是说关闭终端,只是从 退出su,例如),该过程将终止。尽管如此,后台运行的被拒绝的进程可以保持运行。

process terminal io-redirection job-control disown

28
推荐指数
2
解决办法
1万
查看次数

为什么“yes&”会使我的 Bash 会话崩溃?

“是的,而且……”是即兴喜剧中的一个很棒的经验法则。在 UNIX 世界中则不然。

当我运行这个公认的愚蠢yes&命令时,我无法中断它。终端崩溃或陷入循环。

我希望该yes进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。

bash job-control jobs background-process yes

28
推荐指数
2
解决办法
5549
查看次数

当我 Ctrl+C 时,如何杀死并等待后台进程在 shell 脚本中完成?

我正在尝试设置一个 shell 脚本,以便它运行后台进程,当我Ctrlc使用 shell 脚本时,它会杀死孩子,然后退出。

我设法想出的最好的就是这个。似乎kill 0 -INT在等待发生之前也杀死了脚本,所以 shell 脚本在孩子们完成之前就死了。

关于如何让这个 shell 脚本在发送后等待孩子们死亡的任何想法INT

#!/bin/bash
trap 'killall' INT

killall() {
    echo "**** Shutting down... ****"
    kill 0 -INT
    wait # Why doesn't this wait??
    echo DONE
}

process1 &
process2 &
process3 &

cat # wait forever
Run Code Online (Sandbox Code Playgroud)

shell bash kill signals job-control

27
推荐指数
2
解决办法
3万
查看次数

如何在保持第一个命令运行的同时阻止链中的第二个命令?

昨天临睡前,我开始了一个漫长的过程,我认为它在我站起来之前就完成了,所以我使用了

./command && sudo poweroff
Run Code Online (Sandbox Code Playgroud)

我的系统配置为不要求输入密码sudo poweroff,因此在该命令完成后它应该关闭。

但是它仍在运行,我现在想将该系统用于其他任务。让该命令在后台运行不是问题,但让我的系统随时可能关闭才是问题。

有没有办法防止zsh执行poweroff命令,同时确保第一个命令运行直到完成?

/etc/sudoers在这种情况下,编辑文件以便系统询问我的密码是否仍然有帮助?

shutdown command-line zsh job-control

27
推荐指数
2
解决办法
1588
查看次数

有人可以详细解释“set -m”的作用吗?

手册页上,它只是说:

-m 作业控制已启用。

但这实际上意味着什么?

我在一个SO 问题中遇到了这个命令,我遇到了与 OP 相同的问题,即“fabric 无法启动 tomcat”。并set -m解决了这个问题。OP解释了一点,但我不太明白:

问题出在后台任务中,因为它们将在命令结束时被终止。

解决方案很简单:只需添加“set -m;” 命令前的前缀。

linux job-control

26
推荐指数
1
解决办法
2万
查看次数

如何从以前的 shell 恢复后台作业?

可能的重复:
如何否认正在运行的进程并将其关联到新的屏幕外壳?

我启动了一个持续很长时间的命令。我不得不断开连接,所以我bg在退出之前将它移到后台(使用 CTRL+Z 和)。

像这样的东西:

$ my_command
***command is beeing executed and is taking a long time***
^Z
[1]+  Stopped                 my_command
$ bg
[1]+ my_command &
$ exit
Run Code Online (Sandbox Code Playgroud)

我重新连接并可以在进程列表中看到该命令,但无法使用fg.

$ fg
-bash: fg: current: no such job
Run Code Online (Sandbox Code Playgroud)

我如何在前台恢复我的工作?

bash job-control background-process

23
推荐指数
1
解决办法
4万
查看次数

如何计划一个任务在 bash 中另一个已经运行的任务之后运行?

我正在寻找诸如command1 ; command2如何运行之类的东西command2command1但我想计划command2何时command1已运行的执行。

它可以通过输入command2并通过 Enter 确认来解决,假设command1不消耗标准输入,command1并且不会在输出上产生太多文本,使得输入不切实际(输入的字符与command1输出混合)。

bash job-control jobs

22
推荐指数
3
解决办法
1万
查看次数

如何获取工作ID?

正如我们所知,shell 使用户能够&在命令行的末尾运行后台进程。每个后台进程都由一个作业 ID 标识,当然,由它的 PID 标识。

当我执行新作业时,输出类似于[1] 1234(第二个数字是进程 ID)。尝试调用类似的命令stop 1stop %1导致失败消息:stop: Unknown job: 1

了解该stop命令会导致作业暂停,我想知道如何获取作业 ID并正确执行。如果杀死作业的唯一方法是通过其进程 ID,那么作业 ID 的目的是什么?

process job-control jobs

21
推荐指数
2
解决办法
13万
查看次数

+/- 在后台工作完成后

在后台运行作业

$ command &
Run Code Online (Sandbox Code Playgroud)

完成后,终端打印

[n]+    command
Run Code Online (Sandbox Code Playgroud)

或者

[n]-    command
Run Code Online (Sandbox Code Playgroud)

所以有时它是一个加号,有时它是一个减号跟随[n]

加/减是什么意思?

shell job-control background-process

21
推荐指数
1
解决办法
2432
查看次数

Unix中控制终端的概念

有人可以以一种易于理解的方式解释在unix和unix类系统中控制终端的概念吗?它与会话有关吗?如果是,那么如何?

terminal job-control session controlling-terminal

20
推荐指数
1
解决办法
5352
查看次数