如果我停止 Linux 进程它会自动退出吗

如果我停止 Linux 进程它会自动退出吗

假设我正在使用 从互联网下载文件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 &

相关内容