Questions tagged «job-control»

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


5
如何挂起后台进程并将其置于前台
我有一个最初在前台运行的进程。我先按Ctrl+ 暂停Z,然后按继续在后台运行bg <jobid>。 我想知道如何暂停在后台运行的进程? 如何使后台进程成为前台? 编辑: 该进程输出到stderr,那么fg <jobid>当该进程输出到终端时我应该如何发出命令?


2
如何暂停和恢复流程
在bash终端中,我可以按Control+ Z来暂停任何正在运行的进程...然后我可以键入fg以恢复该进程。 如果我只有PID,是否可以暂停进程?如果是这样,我应该使用什么命令? 我正在寻找类似的东西: suspend-process $PID_OF_PROCESS 然后用 resume-process $PID_OF_PROCESS


7
如何关闭终端而不杀死子终端(不先运行“屏幕”)?
有时我在gnome终端中运行一个应用程序,但随后突然不得不重启gnome或其他东西。我想这个问题的答案也很有用,那么我想在发生某些事情时与SSH断开连接。 Gnome的终端树如下所示: gnome-terminal bash some-boring-process 我可以bash从中“分离” gnome-terminal(或some-boring-process从bash 分离并将其输出重定向到某个地方)吗?如果我只是杀死gnome-terminal,bash将被杀死,将其所有子进程

4
Bash中延迟挂起(Ctrl-Y)的目的是什么?
Bash手册页的整个部分仅适用于: 如果运行bash的操作系统支持作业控制,则bash包含使用它的工具。在进程运行时键入暂停字符(通常为^ Z,Control-Z)将导致该进程停止并将控制权返回给bash。 键入延迟的挂起字符(通常为^ Y,Control-Y)会导致该进程在尝试从终端读取输入时停止,并将控件返回到bash。 然后,用户可以使用bg 命令在后台继续执行该作业的状态,fg命令在前台继续执行,或使用kill命令将其删除。^ Z立即生效,并具有额外的副作用,导致丢弃待处理的输出和提前输入。 我从未用过Ctrl- Y; 我只是了解而已。我只用Ctrl- Z(暂停)就可以了。 我试图想象此选项的用途。什么时候有用? (请注意,并非所有Unix变体都具有此功能。Solaris和FreeBSD上存在此功能,而Linux上不存在。相应的设置为stty dsusp。) 也许少主观:有没有什么可以完成Ctrl- Y不能用很容易实现的Ctrl- Z?

3
从ssh会话运行的程序是否取决于连接?
从ssh会话运行的程序是否取决于与客户端的连接?例如,当连接确实很慢时。因此,它是否主动等待直到在屏幕上打印出东西? 并且,如果它确实取决于连接,它是否还会在屏幕或byobu上发生?由于有了这些,即使从主机断开连接,程序仍保持运行。 注意:我仅发现以下相关问题: 暂时断开ssh会话会影响正在运行的程序吗? 连接断开后,通过ssh进行的屏幕会话会怎样?
29 ssh  tty  job-control 

1
Ctrl C与Ctrl Z与前景工作
Ctrl+ Z停止工作,而Ctrl+ C取消工作。 这是为什么?另一种方式会更有意义吗? z@z-lap:~$ sleep 100& [1] 4458 z@z-lap:~$ sleep 200& [2] 4459 z@z-lap:~$ jobs [1]- Running sleep 100 & [2]+ Running sleep 200 & z@z-lap:~$ fg %1 sleep 100 ^Z [1]+ Stopped sleep 100 z@z-lap:~$ jobs [1]+ Stopped sleep 100 [2]- Running sleep 200 & z@z-lap:~$ fg %1 …

4
被取消并失去终端的流程的输出会发生什么?
如果我关闭启动了某些过程的虚拟终端,输出是否直接进入/dev/null,或者会以某种方式污染内存? 在那之后的任何时候,我都可以获取输出以继续读取它吗? [EDIT]:那么,放弃进程的那一刻是否有效地结束了我控制其输出的能力? 我还注意到,如果我放弃一个已停止的进程,起初一切似乎都很正常:它既不终止也不在作业中显示。但是,如果我注销(并且我不是要关闭终端,su例如,从退出),则该过程将终止。一样,后台运行的独立进程可以保持运行。

5
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



2
有人可以详细解释“ set -m”是什么吗?
在手册页上,它只是说: -m作业控制已启用。 但是,这实际上意味着什么? 我在SO问题中遇到了此命令,我遇到了与OP相同的问题,即“织物无法启动tomcat”。并set -m解决了这个问题。OP做了一些解释,但我不太明白: 问题出在后台任务中,因为它们将在命令结束时被杀死。 解决方法很简单:只需添加“ set -m;” 命令前的前缀。

1
从脚本启动后台进程,并在脚本结束时进行管理
我想要类似于脚本中的守护程序来运行和配置进程。 我的Shell是在Cygwin下模拟的zsh,守护进程是基本的FTP服务器SFK。 对于这里重要的事情,脚本startserv.sh可以按如下方式草拟: #!/bin/sh read -s -p "Enter Password: " pw user=testuser share=/fshare cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share" $cmd & 运行脚本后startserv.sh,它停止(结束?)而不显示任何提示,然后: CTRL+ C结束脚本和后台作业过程; 点击Enter脚本将结束该过程,并保留在后台。 无论如何,我只能通过ps而看不到它jobs,因此,当我想关闭该过程时,我必须发送一个残酷的kill -9信号,我希望避免使用 CTRL+ C。 另一种方法 是在后台运行整个脚本。“将”,但是read如果脚本以方式运行,则该命令将无法获取用户输入startserv.sh &。 请注意,我需要一个临时服务器,而不是真正的守护程序:也就是说,我希望服务器进程在脚本结束后在后台运行,以执行简单的交互式Shell任务(使用虚拟机来宾),但是我不希望这样做。不需要生存过程的壳;因此nohup似乎不合适。

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.