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

掌握Linux Shell进程控制(从零开始学会管理你的程序运行)

在使用 Linux 系统时,你是否曾遇到过这样的情况:运行一个程序后,终端被“卡住”了,无法执行其他命令?或者你想让某个任务在后台默默运行,而不用一直开着终端窗口?这正是 Linux Shell 进程控制 要解决的问题。

本教程将带你从零开始,一步步理解并掌握 Shell 中的进程与作业控制,即使你是完全的小白,也能轻松上手!

什么是进程和作业?

在 Linux 中,每一个正在运行的程序都被称为一个进程(Process)。而当你在 Shell 中启动一个命令(比如 ping baidu.com),这个命令就成为一个作业(Job)。Shell 允许你对这些作业进行前台/后台切换、暂停、恢复甚至终止操作。

掌握Linux Shell进程控制(从零开始学会管理你的程序运行) Linux Shell进程控制 进程管理 后台运行 作业控制 第1张

1. 后台运行程序

默认情况下,你在终端输入命令后,程序会在前台运行,占用当前终端。如果你想让它在后台运行,只需在命令末尾加上 & 符号:

$ sleep 60 &[1] 12345

上面的命令会启动一个休眠 60 秒的进程,并立即返回提示符,让你可以继续输入其他命令。[1] 是作业编号(Job ID),12345 是进程 ID(PID)。

2. 查看当前作业

使用 jobs 命令可以查看当前 Shell 会话中所有作业的状态:

$ jobs[1]+  Running                 sleep 60 &

状态可能是 Running(运行中)、Stopped(已暂停)等。

3. 暂停与恢复作业

如果你正在运行一个前台程序(比如 top),可以按 Ctrl + Z 将其暂停并放到后台:

$ top^Z[1]+  Stopped                 top

此时你可以用以下命令恢复它:

  • fg:将作业恢复到前台运行
  • bg:让作业在后台继续运行

例如:

$ bg %1[1]+ top &

其中 %1 表示作业编号 1。如果只有一个作业,也可以直接写 bg

4. 终止进程

要结束一个进程,可以使用 kill 命令。你可以通过作业编号或进程 ID 来终止它:

# 通过作业编号终止$ kill %1# 通过进程ID终止(假设PID是12345)$ kill 12345

如果普通 kill 无效,可以使用强制终止信号:

$ kill -9 12345

实用技巧:nohup 与 disown

有时候你希望程序在关闭终端后仍然运行,这时候可以用 nohup

$ nohup python my_script.py &

或者,对于已经启动的后台作业,可以使用 disown 将其从 Shell 的作业表中移除,防止终端关闭时被杀死:

$ disown %1

总结

通过本教程,你已经掌握了 Linux Shell 进程控制 的核心技能:如何让程序在后台运行、查看作业状态、暂停/恢复任务、以及安全地终止进程。这些技巧不仅能提升你的工作效率,也是系统管理和自动化脚本编写的基础。

记住关键词:Linux Shell进程控制进程管理后台运行作业控制,它们是你深入学习 Linux 的重要基石。

现在,打开你的终端,试试这些命令吧!实践是最好的老师。