linux后台运行和关闭、查看后台任务

在日常使用 Linux 的过程中,我们经常需要将任务放到后台运行,或者对多个并发任务进行管理。


一、使用 &:命令后台运行

在命令末尾加上 &,可以让该命令在后台异步执行,终端不会被占用。例如:

1
watch -n 10 sh test.sh &

这个命令的意思是:每 10 秒执行一次 test.sh 脚本,并且在后台运行。
这种方式适合执行不需要交互、运行时间较长的任务。

⚠️ 注意:当你关闭当前终端后,使用 & 启动的任务通常会一并终止。


二、Ctrl + Z:挂起当前前台任务

在执行一个前台任务时,按下 Ctrl + Z 可以将其挂起(暂停执行),并转为后台状态。

此时任务并未运行,而是处于“暂停”状态。你可以通过 jobs 查看它的编号,并结合 bgfg 进行后续处理。


三、jobs:查看后台任务列表

jobs 命令可以列出当前 shell 中所有的后台任务(包括暂停的和正在运行的)。

1
2
jobs
jobs -l # 显示每个任务对应的 PID

显示结果通常类似:

1
2
[1]+  Running    watch -n 10 sh test.sh &
[2]- Stopped python script.py

其中 + 表示默认任务,- 表示次要任务,编号(如 [1])可用于 fgbg


四、fg:将后台任务调至前台执行

使用 fg 命令可以把一个后台任务拉回前台继续运行。

1
fg %1   # 将任务编号为 1 的任务恢复到前台

如果你只有一个后台任务,也可以直接用 fg 而不加参数。


五、bg:恢复后台暂停的任务

如果某个任务被你 Ctrl + Z 暂停了,可以用 bg 命令让它在后台继续运行。

1
bg %2   # 将任务编号为 2 的任务在后台继续执行

这时候任务不会回到前台,但会继续运行,不会阻塞终端。


六、kill:终止后台进程

你可以通过两种方式终止后台任务:

方法一:使用 jobs%jobnumber

1
kill %1   # 杀掉编号为 1 的后台任务

方法二:使用 ps 查看 PID 再杀掉

1
2
ps aux | grep test.sh
kill 12345 # 终止 PID 为 12345 的进程

如果你在前台执行某个任务,也可以直接按 Ctrl + C 来终止它。


七、nohup:让任务脱离终端独立运行

当你希望某个任务在关闭终端之后仍能继续运行,可以使用 nohup 命令。

1
nohup sh test.sh &

输出默认会被写入到 nohup.out 文件中,即使关闭当前终端,该脚本依然会继续运行。

你可以通过以下命令确认进程是否仍在:

1
ps aux | grep test.sh

这是生产环境中部署后台任务的常见做法,适合长期运行的服务或爬虫等任务。


八、前后台命令速查表

操作 命令或快捷键 说明
后台运行 command & 命令直接后台执行
暂停并转后台 Ctrl + Z 暂停前台任务,任务进入后台暂停状态
查看后台任务 jobs / jobs -l 查看所有后台任务和其状态
后台任务转前台 fg %n 恢复后台任务到前台执行
恢复后台执行 bg %n 让后台任务继续在后台运行(取消暂停)
杀死任务 kill %n / kill PID 通过任务编号或 PID 终止进程
永久后台运行 nohup command & 即使关闭终端也能继续运行任务
终止前台任务 Ctrl + C 强制终止正在执行的前台任务
评论

:D 一言句子获取中...