如何在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
相关产品推荐
相关产品推荐

