Questions tagged «job-control»

有关shell可以控制作业的各种方式的问题:挂起,恢复,终止执行等。

2
更改流程的父流程?
是否可以更改流程的父流程?如果是,怎么办? 例如, 如何screen管理将会话screen及其内部运行的进程附加到不同的Shell进程?上级流程有变化吗? 我似乎听说过其他正在运行程序的Shell进程更改方式,但我不记得了。程序的父进程也有变化吗? 我认为disown某个流程会更改该流程的父流程,只是因为名称disown暗示了这一点。但是我发现这是不正确的。 Emacs客户端可以在另一个终端选项卡上连接到emacs服务器。上级流程有变化吗?

1
减号和加号登录作业流程
这些命令在后台运行: foo @ contoso〜$睡眠30& foo @ contoso〜$睡眠60& foo @ contoso〜$睡眠90& 运行作业过程后的减号和加号是多少? foo @ contoso〜$职位 [1]保持睡眠30& [2]-跑步睡眠60& [3] +跑步睡眠90&

1
如何像bash一样暂停和恢复进程
该问题是针对以下问题的后续措施:如何暂停和恢复流程 我已经从gnome-terminal中的bash会话开始使用Firefox。 流程树如下所示: $ ps -e -o pid,ppid,cmd -H 1828 1 gnome-terminal 26677 1828 bash 27980 26677 /bin/sh /usr/lib/firefox-3.6.15/firefox 27985 27980 /bin/sh /usr/lib/firefox-3.6.15/run-mozilla.sh /usr/lib/firefox-3.6.15/firefox-bin 27989 27985 /usr/lib/firefox-3.6.15/firefox-bin 28012 27989 /usr/lib/firefox-3.6.15/plugin-container /usr/lib/adobe-flashplugin/libflashplayer.so 27989 plugin true 当我击中CTRL+Zbash时,它将暂停Firefox。当我发出命令bg(或fg)时,它将恢复Firefox。这是预期的。 当我kill -s SIGTSTP 27980在另一个终端中发出命令时,它将[1]+ Stopped firefox在第一个终端中打印该行(就像我按时一样CTRL+Z),但是它不会挂起firefox。我假设它只是挂起外壳脚本。 当我kill -s SIGTSTP 27989在另一个终端中发出命令(注意PID)时,它将暂停Firefox。第一终端不注意这一点。 bash如何暂停整个进程树?它只是遍历所有树和SIGTSTP的所有子级吗?


4
禁用bash中的作业控制(CTRL-Z)
有时我偶然会碰巧按下CTRL+ Z,我的应用程序就会消失在后台。我知道,我可以用将它带回来fg,所以没什么大不了的。但是我想知道还是要关闭它job control。在我的一生中,我不记得有什么需要的实例,在我看来,它只是过去的遗物。 可以job control完全禁用吗?还是我错过了一些东西,这个功能可能有用?我如何在我的手机上禁用它.bashrc 更新: 我已经尝试过set +m@Falsenames建议。但是,这仅在我在终端中键入时有效。添加set +m到我.bashrc没有任何效果。

2
完成的后台工作状态中的“退出2”是什么?
我有一个练习,将一些数据(某些目录的* conf)放入文件中,并且需要在后台进行。我做到了,我想知道输出消息的含义是什么: [A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 & 输入升起此行: [1] 2533 这是什么意思?在其他回车之后,出现另一条消息 [A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 这是什么意思?什么是“出口2”? 输入检查结果-似乎一切正常。 [A@localhost tests]$ [A@localhost tests]$ ls -l test1_6_conf.txt -rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt [A@localhost tests]$ 我正在使用CentOS …

4
如何将进程移至后台并同时使其输出静音?
假设我在终端中启动一个进程,并在运行时将输出发送到标准错误。我想将进程移到后台,同时也使其静音。 有没有一种方法可以执行此操作而又不停止进程并使用&和重新启动它> /dev/null 2>&1?我想知道是否有一些命令可以执行bg 并可以更改目标进程的输出描述符。

4
在后台管道命令序列中获取任何命令的PID
如果在中bash执行: cmd1 | cmd2 | ... | cmdi | ... | cmdn & 哪里cmd{1..n}可能没有区别,我该如何获取PID cmdi?或者,我如何发信号通知该cmdi过程?(例如,发送SIGUSR1?) pkill/ pgrep,pidof等看起来不像很好的答案,因为其他情况下cmdi或许运行,包括作为同一管道的一部分。jobs -p给cmd1我的PID 。 i可以是{1..n}。
11 bash  shell  pipe  job-control 

1
非阻塞bash命令
假设我有一个bash脚本,其中包含以下内容: #!/bin/sh gedit rm *.temp 当我使用执行它时sh ./test.sh,会gedit弹出,但是rm直到关闭后该零件才运行gedit。 我希望脚本即使gedit未关闭也能继续运行;就像gedit不阻止bash执行一样。 我提供的示例只是一个示例(rm在实际情况下,第一个示例无效)。
11 bash  job-control 

1
如何在Bash中取消其余命令列表?
在Bash中,有时我会键入命令列表并点击Enter,直到后来才意识到列表末尾的某些命令有错误。我知道如果我按Ctrl+ C,它将终止当前正在运行的命令并取消其余列表。有什么方法可以取消列表的其余部分而不终止当前正在运行的命令? 例如,假设我输入了类似 foo; bar 要么 foo && bar foo长时间运行的命令在哪里很重要,不要中断它,并且bar做一些不可逆的和不需要的操作(例如shutdown -h now或rm -rf /)。在foo仍然运行时,是否有一种通用的方法告诉外壳foo完成但不bar随后运行?(是的,我可以更改其权限bar以使其不可执行,但是,如果同时要使用bar类似的东西,这并不是特别方便rm,如果我不拥有它bar或者bar是内置的,也无法使用。)

1
为什么后台进程有时会自发停止?
有时,bg当我在bash中使用进程为背景设置一段时间后,当我在同一shell中按Enter键以重新显示提示时(只是在显示了后台进程的某些输出时检查我是否仍在bash中),后台进程似乎自发停止。 如果我bg再次做同样的问题。 解决它的唯一方法似乎是fg。 为什么会这样?

3
如何取消在另一个外壳(终端窗口或选项卡)中启动的作业?
如果我开始一个过程并在终端窗口中将其作为背景(例如ping google.com &),则可以使用kill %1(假设它是工作1)将其杀死。 但是,如果我打开另一个终端窗口(或选项卡),则后台进程未在下面列出,jobs并且无法使用直接杀死kill。 是否可以从另一个终端窗口或选项卡中终止此过程? 注意:我使用的是Xfce Terminal Emulator 0.4.3和bash(尽管如果解决方案存在于另一个通用shell中,但bash不存在,我也可以使用它)


3
背景,僵尸,守护程序和不带ctty的这些概念是否连接在一起?
这些过程的概念是如何关联在一起- ,,background 和?zombiedaemonwithout controlling terminal 我觉得它们之间有某种距离,特别是通过的概念controlling terminal,但是我仍然没有太多信息可以讲述一个故事,例如是否需要给一个孩子讲一些有关Linux的文章而又不撒谎。 更新#1:例如(我不知道这是不是真的) background-- zombie前台进程无法成为zombie,因为zombie是没有父进程的后台进程 daemon- without ctty-所有daemons无运行ctty,但不是所有的过程,而不ctty是daemons background-- 可以检索到daemona background process以再次交互式运行,daemon is not zombie- without ctty- zombie如果有无所谓ctty连接到它或不 background- without ctty- processes发送到后台,而他们有ctty,如果成为守护进程或模具ctty是从他们采取

4
SIGKILL为什么不终止已停止的程序(是)?
我正在使用Ubuntu 14.04,但遇到这种现象,我似乎无法理解: 运行yes命令(在默认外壳中:Bash) 键入CtrlZ停止yes 运行jobs。输出: [1]+ Stopped yes 跑kill -9 %1停yes。输出: [1]+ Stopped yes 运行jobs。输出: [1]+ Stopped yes 这是在3.16.0-30-generic并行虚拟机上运行的Ubuntu 上。 为什么我的kill -9命令没有终止yes命令?我以为SIGKILL不能被抓住或忽略?以及如何终止yes命令?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.