You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中终止屏幕占用类命令且不终止脚本本身?

解决Bash脚本中终止htop不退出脚本的方案

下面是几种直接可用的解决办法:

方法一:临时屏蔽脚本的SIGINT信号

通过trap命令让脚本暂时忽略Ctrl+C触发的SIGINT信号,等htop退出后再恢复默认处理逻辑。这样按Ctrl+C只会终止htop,脚本不受影响。

示例代码:

# 保存当前的*SIGINT*信号处理规则
original_trap=$(trap -p SIGINT)
# 让脚本忽略*SIGINT*
trap '' SIGINT
# 运行htop
htop
# 恢复原来的信号处理规则
eval "$original_trap"

# 脚本后续代码继续执行
echo "htop已退出,脚本继续运行..."

方法二:用setsid让htop独立运行

setsid会让htop在新的会话中启动,脱离当前脚本的信号上下文,Ctrl+C只会终止htop,脚本可以继续执行。

示例代码:

setsid htop
echo "htop退出后,脚本会继续执行这里的内容"

方法三:捕获SIGINT防止脚本退出

先设置脚本捕获SIGINT但不执行退出操作,等htop终止后再恢复默认的信号处理,既保证htop能被Ctrl+C终止,又不会让脚本跟着退出。

示例代码:

# 设置捕获*SIGINT*但不做退出处理
trap : SIGINT
# 运行htop
htop
# 恢复默认的*SIGINT*处理逻辑(避免后续无法正常终止脚本)
trap - SIGINT

# 后续代码正常执行
echo "脚本仍在运行"

内容的提问来源于stack exchange,提问作者Clément

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:30:57