在Linux中停止正在运行的脚本有几种方法,以下是常用的几种方式:
这是最简单直接的方法:
- 在脚本运行的终端中按下 Ctrl + C
- 这会发送SIGINT信号,通常会导致脚本立即终止
如果脚本在后台运行或无法通过Ctrl+C停止:
1. 首先找到脚本的进程ID:
bash
ps aux | grep script_name.sh
或使用更精确的方式:
bash
pgrep -f script_name.sh
bash
kill -9 PID
其中PID是上一步找到的进程ID如果知道脚本名称,可以直接使用:
pkill -f script_name.sh
终止所有同名进程:
killall script_name.sh
如果是作为服务运行的脚本:
sudo systemctl stop service_name
kill -9
(SIGKILL)是强制终止,不会给进程清理的机会,可能导致资源未释放kill PID
,如果无效再使用kill -9 PID
为避免脚本无法停止的情况,可以在脚本中实现信号处理:
#!/bin/bash
# 捕获退出信号
trap "echo '脚本被终止'; exit" SIGINT SIGTERM
# 脚本主体
while true; do
echo "运行中..."
sleep 1
done
这样可以确保脚本在被终止时有机会执行清理工作。