har*_*oba 1 linux unix job-control
假设我停止了一个进程,Ctrl+Z并在五小时后使用fg. 就流程的正常运作而言,这有多大风险?
例如,假设vim正在将一个大文件写入磁盘,并且我在写入过程中停止了它。vim当我恢复它时会很高兴地完成写入文件,没有任何问题吗?作为一种极端情况,如果我同时删除了文件会怎样?我最终会损坏文件系统吗?(删除停止vim写入的文件是否可能,或者文件系统驱动程序是否会阻止我删除文件,直到vim完成写入?)
vim显然是一个相对简单的软件,“仅仅是”一个文本编辑器。我是否可以停止和恢复复杂的软件,例如apache或X11不期望有太多问题(除了客户端超时,在 Apache 的情况下)?
小智 6
本质上,Ctrl-Z 并不是一件危险的事情。你不应该害怕它。
究竟会发生什么取决于进程正在做什么。你的例子是值得考虑的好例子。
第一种,用 vim 写一个文件……不会有什么不好的事情发生。如果恢复 vim 时仍有磁盘空间,它将完成写入文件。如果在 vim 挂起时杀死它,该文件将被截断,其中包含挂起之前写入的尽可能多的数据(无论如何,就您需要而言)。如果在 vim 挂起时删除文件,基本上 vim 将继续查看该文件,只要它需要它。在 vim 外部,该文件将被视为已删除,但 vim 仍会看到它,直到它完成写入并关闭它,此时它会消失。(如果 vim 尝试重新打开它,它将消失。)在您习惯了最后的行为之后,您会觉得当 Windows 锁定文件时,您正在使用一个愚蠢的玩具。
你的第二个例子可能会导致问题。如果有其他进程与你的进程交互,他们都会在等待这个应用程序时有点卡住。所以是的,客户端超时会发生,一些进程可能会无限期地阻塞等待读取数据等。但仍然没有真正“坏”的事情发生。除非某处存在错误,否则不会损坏系统。(例如,无法处理超时的编写不佳的应用程序只会放弃并丢失其所有数据......但这不是您暂停的应用程序的错。)
显然,Apache 将停止提供网页服务。X11 将停止推动像素。但是通常当你再次启动它时,被阻塞的东西会恢复,如果客户端超时,如果你重新启动它们,它们也会再次正常工作。
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |