linux后台运行和关闭、查看后台任务
在日常使用 Linux 的过程中,我们经常需要将任务放到后台运行,或者对多个并发任务进行管理。
一、使用 &
:命令后台运行
在命令末尾加上 &
,可以让该命令在后台异步执行,终端不会被占用。例如:
1 | watch -n 10 sh test.sh & |
这个命令的意思是:每 10 秒执行一次 test.sh
脚本,并且在后台运行。
这种方式适合执行不需要交互、运行时间较长的任务。
⚠️ 注意:当你关闭当前终端后,使用 &
启动的任务通常会一并终止。
二、Ctrl + Z:挂起当前前台任务
在执行一个前台任务时,按下 Ctrl + Z
可以将其挂起(暂停执行),并转为后台状态。
此时任务并未运行,而是处于“暂停”状态。你可以通过 jobs
查看它的编号,并结合 bg
或 fg
进行后续处理。
三、jobs:查看后台任务列表
jobs
命令可以列出当前 shell 中所有的后台任务(包括暂停的和正在运行的)。
1 | jobs |
显示结果通常类似:
1 | [1]+ Running watch -n 10 sh test.sh & |
其中 +
表示默认任务,-
表示次要任务,编号(如 [1]
)可用于 fg
和 bg
。
四、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 | ps aux | grep test.sh |
如果你在前台执行某个任务,也可以直接按 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 |
强制终止正在执行的前台任务 |
1.Https 浅解
2.新服务器运行django站点
3.CORS跨域问题详解
4.小白的nginx指南
5.关键词提取算法
6.deepin wine QQ汉字显示方块解决方案
7.deepin wine 微信启动失败解决记录
8.pyecharts库只能识别int类型的整型数据