当前位置:首页 > 服务器技术 > 正文

掌控你的程序运行节奏(Linux进程挂起与恢复完全指南)

在日常使用 Linux 系统时,你可能会遇到需要临时停止某个正在运行的程序,稍后再继续执行的情况。这种操作就叫做“进程挂起”和“进程恢复”。无论你是刚接触 Linux 的新手,还是有一定经验的用户,掌握这些技巧都能让你更灵活地管理任务。

什么是进程挂起?

进程挂起(Suspend)是指暂时停止一个正在运行的进程,使其不再占用 CPU 资源,但保留其在内存中的状态。被挂起的进程不会退出,只是处于“暂停”状态。之后你可以选择恢复它,让它从暂停的地方继续运行。

掌控你的程序运行节奏(Linux进程挂起与恢复完全指南) Linux进程挂起 Linux进程恢复 kill命令使用 进程控制 第1张

方法一:使用快捷键 Ctrl + Z(前台进程)

如果你是在终端中直接运行一个命令(比如 ping google.com),那么这个进程就是“前台进程”。你可以通过按下键盘上的 Ctrl + Z 快捷键来挂起它。

例如:

$ ping google.comPING google.com (142.250.185.206) 56(84) bytes of data.64 bytes from lhr48s31-in-f14.1e100.net (142.250.185.206): icmp_seq=1 ttl=117 time=25.3 ms64 bytes from lhr48s31-in-f14.1e100.net (142.250.185.206): icmp_seq=2 ttl=117 time=24.1 ms^Z[1]+  Stopped                 ping google.com  

看到 ^Z 和 “Stopped” 字样,说明进程已经被成功挂起。

如何恢复被挂起的进程?

挂起后,你可以使用以下两个命令来恢复进程:

  • fg:将挂起的进程恢复到前台继续运行。
  • bg:将挂起的进程放到后台继续运行(不占用当前终端)。

继续上面的例子,输入 fg

$ fgping google.com64 bytes from lhr48s31-in-f14.1e100.net (142.250.185.206): icmp_seq=3 ttl=117 time=23.8 ms64 bytes from lhr48s31-in-f14.1e100.net (142.250.185.206): icmp_seq=4 ttl=117 time=24.5 ms  

此时,ping 命令继续从前台运行,就像从未中断过一样。

方法二:使用 kill 命令(任意进程)

如果你想挂起一个已经在后台运行的进程,或者不是由当前终端启动的进程,就需要用到 kill 命令配合特定的信号。

Linux 中有两个关键信号用于控制进程状态:

  • SIGSTOP (信号编号 19):强制挂起进程(不可被忽略)。
  • SIGCONT (信号编号 18):恢复被挂起的进程。

首先,你需要知道目标进程的 PID(进程 ID)。可以用 pspgrep 查找:

$ pgrep firefox12345  

然后使用 kill -STOP 挂起它:

$ kill -STOP 12345  

要恢复该进程,使用:

$ kill -CONT 12345  

这种方式适用于任何进程,是系统管理员常用的 Linux进程控制 手段。

查看挂起的进程

在当前终端中,你可以使用 jobs 命令查看所有被挂起或在后台运行的作业:

$ jobs[1]+  Stopped                 ping google.com  

注意:jobs 只显示当前 shell 会话中的作业。对于系统级进程,建议使用 ps 命令并查看状态列(STAT)——挂起的进程通常显示为 Tt

实用小贴士

  • 挂起进程不会释放内存,长时间挂起大量进程可能导致内存不足。
  • 某些程序(如数据库服务)不建议随意挂起,可能造成数据不一致。
  • 使用 nohupscreen 可以更好地管理长期运行的任务,避免因终端关闭而中断。

总结

通过本文,你已经学会了两种主要的 Linux进程挂起Linux进程恢复 方法:快捷键 Ctrl+Z 配合 fg/bg,以及使用 kill 命令发送 SIGSTOPSIGCONT 信号。这些技能不仅能提升你的操作效率,也是深入理解 Linux 进程管理的基础。现在,你可以自信地暂停和恢复任何任务了!

记住关键词:Linux进程挂起Linux进程恢复kill命令使用进程控制 —— 它们是你掌握 Linux 系统管理的关键一步。