fg
来恢复该进程。如果我只有PID,是否可以挂起该进程?如果是这样,我应该使用什么命令?
我正在寻找类似的东西:
suspend-process $PID_OF_PROCESS
然后使用
resume-process $PID_OF_PROCESS
#1 楼
您可以使用kill
停止该过程。要对该过程进行“礼貌”的停止(正常使用时建议使用此方法),请发送SIGTSTP:
kill -TSTP [pid]
要进行“硬”停止,请发送SIGSTOP:
kill -STOP [pid]
请注意,如果您要通过PID停止的进程在外壳的作业表中,它可能在那里仍然可见,但是终止了,直到再次执行该过程。
要恢复执行该过程,请发送SIGCONT:
kill -CONT [pid]
#2 楼
您应该为此使用kill
命令。要更详细-您必须指定正确的信号,即
$ kill -TSTP $PID_OF_PROCESS
暂停该过程和
$ kill -CONT $PID_OF_PROCESS
恢复该过程。在此处记录。
评论
我想知道是什么历史偶然性导致此答案获得的选票减少?答案几乎相同,这个是第一位。
–通配符
16年8月16日在3:08
@Wildcard,当我创建答案时,我有点着急,因此,它基本上只包含杀死-TSTP的第一部分(即,如何暂停)。 1/2年后,即2011年,我重新审视了我的答案,并注意到答案不完整。因此,我对其进行了编辑,还添加了kill -CONT部分。与史蒂夫的回答相比,这应该可以解释投票的差异。
–maxschlepzig
16年8月16日在7:25
评论
除非有其他原因,否则我更喜欢SIGTSTP而不是SIGSTOP,因为某些应用程序确实专门处理SIGTSTP。例如,如果scp显示进度条,则SIGTSTP会导致它在挂起之前清理终端模式,但是如果您发送SIGSTOP,则它没有机会这样做。
–短暂
2010-09-15 21:55
@ephemient我尝试了SIGTSTP,我明白了您说的关于清理终端的内容。感谢您对SIGTSTP的解释,学习新事物非常有用:)
–史蒂夫·伯丁(Steve Burdine)
2010-09-15 22:38
注意,还可以使用%符号然后使用作业号(可以通过运行作业找到一个)来引用[pid]值,这也很有用。所以你会去:杀死-TSTP%1
–卡鲁
16年5月2日在22:58
另请参阅:[stackoverflow.com/questions/11886812/…
–AAAfarmclub
16年12月27日在8:15