在bash中,使用control-z暂停进程有哪些潜在的负面后果?


11

使用bash,可以使用暂停进程control-z。但是,是否有任何一般情况或准则来提防进程在暂停后无法正常运行?

我的特定情况是创建一个tar文件,该文件花费比预期更长的时间。我想暂停它以使其成为背景,但决定不这样做。我的问题当然不是特定于tar。相反,我希望更好地了解bash中的暂停功能,以及使流程对暂停产生不良反应的原因。

Answers:


3

依赖于原子副本的存储任务(pvmove,veritas vx-无论如何)。如果他们陷于控制之外,那就不好了。这取决于任务是否仅触发某些API,然后从内核空间执行其余的任务,然后才是安全的。如果它在发生在你的shell * *过程,然后真正去用屏幕和过问。

绝对建议您避免将它们停止在后台运行。使用dd等缓冲区的命令似乎更好,但上述磁带驱动器除外。

(当我在清理别人的混乱的同时发生这种情况时,我曾经赢得了一次额外的重启,更少的睡眠和很多的偏执狂。显然:如果要解决别人的捷径,不要尝试捷径...)


6

如果您的进程正在写数据,请注意非随机访问设备和缓冲区的时序问题可能会出现问题。我看到磁带驱动器有时会出现问题。


网络/防火墙会话可能会超时并且无法重新启动,因为未重新发送TCP-SYN。
吉比2012年

TCP堆栈将继续发送窗口已满的ACK,对吗?
麦哲伦

保持活动数据包既不是TCP也不是IP协议的一部分,充其量是应用程序的一部分。因此,防火墙或远程客户端或服务器可能会超时,等待数据包并断开套接字/连接。
jippie 2012年

不与keepalive对话,这些显然是应用程序级别。我在谈论传输级别的TCP滑动窗口的ACK。
麦哲伦

2

还有一个普通的场景:执行Ctrl-Z,然后忘记它并注销,然后丢失该过程!=)


0

这个问题并不是真正的具体答案,但是,您可以尝试使用运行并发作业screen。因此,您可以将Shell与另一个程序同时使用。


是的,屏幕始终是一个好方法。不过,我不确定如何回应您的名字。
韦斯利2012年

@toiletfreak屏幕如何替代暂停?屏幕在后台运行作业,对吗?但是,如果您拆下屏幕,它还会继续...
Bernhard
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.