Linux系统中怎么停止正在执行的脚本

来源:网站主作者:下班再修头衔:程序员
导读:本期聚焦于小伙伴创作的《Linux系统中怎么停止正在执行的脚本》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux系统中怎么停止正在执行的脚本》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统运行过程中,我们经常会启动各类脚本执行任务,当脚本出现运行异常、占用过多系统资源或者已经不需要继续执行时,就需要及时停止正在运行的脚本。不同的脚本启动方式对应不同的停止方法,掌握正确的操作方式可以避免系统出现不必要的问题。

Linux系统中怎么停止正在执行的脚本

前台运行脚本的停止方法

如果脚本是在当前终端前台直接运行的,比如执行bash test.sh命令启动的脚本,停止方式非常简单,直接使用快捷键就可以终止进程。

最常用的快捷键是Ctrl + C,这个组合键会向当前前台进程发送SIGINT信号,默认情况下脚本收到这个信号就会终止执行。如果脚本内部捕获了这个信号并做了自定义处理,可能需要使用Ctrl + 发送SIGQUIT信号,这个信号的默认行为是终止进程并生成核心转储文件。

后台运行脚本的停止方法

如果脚本是在后台运行的,比如启动时加了&符号,或者使用nohup命令启动的脚本,就无法通过快捷键直接终止,需要通过进程管理相关命令来操作。

第一步:查找脚本对应的进程ID

首先需要找到正在运行的脚本对应的进程ID,也就是PID,常用的查找命令有以下几种:

  • ps命令:可以查看当前系统的进程信息,结合grep过滤出目标脚本的进程
  • pgrep命令:可以直接根据进程名查找对应的PID,使用更简洁
  • pidof命令:根据进程名查找PID,返回结果更直接

以下是使用ps命令查找脚本进程的示例,假设要查找的脚本是test.sh:

# 查看所有进程,过滤包含test.sh的进程
ps -ef | grep test.sh
# 输出示例
# root      1234  1000  0 10:00 pts/0    00:00:00 bash test.sh
# root      1235  1000  0 10:00 pts/0    00:00:00 grep --color=auto test.sh

上面的输出中,1234就是test.sh脚本对应的进程PID,注意要排除grep自身的进程,避免误判。

也可以使用更简洁的pgrep命令查找:

# 查找名为bash的进程中执行test.sh的PID
pgrep -f "bash test.sh"
# 输出示例
# 1234

第二步:使用kill命令终止进程

找到PID之后,就可以使用kill命令发送信号终止进程,不同的信号对应不同的终止行为:

信号编号信号名称作用说明
15SIGTERM默认信号,请求进程终止,进程可以捕获这个信号做收尾工作后退出
9SIGKILL强制终止信号,进程无法捕获,会直接被系统终止,可能会导致数据丢失
2SIGINT中断信号,和Ctrl+C发送的信号一致,进程可以捕获处理

常规情况下优先使用默认的SIGTERM信号终止进程,命令格式如下:

# 终止PID为1234的进程,默认发送SIGTERM信号
kill 1234

如果进程没有响应,再使用强制终止信号:

# 强制终止PID为1234的进程
kill -9 1234

停止脚本的注意事项

在停止脚本时需要注意以下几点,避免操作失误:

  • 确认PID对应的进程确实是目标脚本,避免误杀其他重要进程,可以先通过ps -fp PID命令查看进程详细信息
  • 优先使用SIGTERM信号,给脚本留出收尾时间,比如关闭打开的文件、释放占用的资源,只有进程无响应时再使用SIGKILL信号
  • 如果脚本启动了多个子进程,可能需要先停止子进程再停止父进程,或者使用pkill命令根据进程组终止所有相关进程

以下是使用pkill命令根据脚本名批量终止所有相关进程的示例:

# 终止所有执行test.sh的bash进程
pkill -f "bash test.sh"

掌握以上方法之后,就可以应对Linux系统中各种正在执行脚本的停止场景,根据实际需求选择合适的方式操作即可。

Linux停止脚本进程管理kill命令修改时间:2026-06-28 20:30:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。