![如果我停止 Linux 进程它会自动退出吗](https://linux22.com/image/1296662/%E5%A6%82%E6%9E%9C%E6%88%91%E5%81%9C%E6%AD%A2%20Linux%20%E8%BF%9B%E7%A8%8B%E5%AE%83%E4%BC%9A%E8%87%AA%E5%8A%A8%E9%80%80%E5%87%BA%E5%90%97.png)
假设我正在使用 从互联网下载文件wget
。
现在如果我按下CTRL + Z
它就会说进程已停止。
现在我想知道它会自动被杀死还是会保持原样。它会消耗任何内存吗
答案1
它会保留下来。ctrl + Z
向进程发送 SIGTSTP 信号,而不是 SIGQUIT 或 SIGKILL。如果您想终止进程,请使用ctrl + C
或使用 kill 命令终止已停止的进程。在某些 shell 中,它只是kill %
。
答案2
即使进程被终止,Linux 仍会将其保留在内存中。99% 的机器拥有的内存比它们 99% 的时间实际可以使用的内存要多,因此 Linux 会将该程序保留在内存中,以防它很快再次运行。如果是这样,那么操作系统就省去了从磁盘加载程序的麻烦。如果不是,也没什么坏处,可以在需要时释放内存。
如果进程没有被终止,它仍然可以从内存中弹出。Linux 知道它可以从磁盘重新加载该程序。因此,如果内存很宝贵,它就不必浪费内存来保存当前实际上未被访问的数据。
因此,是否耗尽内存与进程是否终止无关。Linux 根据最近使用情况决定是否将内容保留在内存中,无论哪种方式都不会使用。
答案3
通过按 ctrl + z,您只能暂停/暂停该进程。在这种情况下,该进程仍处于活动状态并消耗内存。要终止该进程,请使用 ctrl + c 或 kill 命令。
答案4
Ctrl+Z
暂停该进程并以表格形式打印作业编号[1]+ Stopped procname
您可以使用 来恢复并将该过程带到前台fg 1
,其中 1 是打印给您的数字。
或者,您可以使用 在后台恢复它bg 1
,这样它将继续运行,而您继续在 shell 中工作。即使您退出 shell,该进程仍将继续运行。您可以&
在启动进程时在命令行末尾附加 来实现相同的效果,例如
wget http://www.example.com &