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

如何向tmux窗口内运行的脚本发送Ctrl-C而非关闭窗口?

解决Ctrl-C终止Python后不关闭tmux窗口的问题

方法1:修改Shell脚本,让Python退出后保持脚本运行

在/opt/script.sh的末尾,将原有的python3 script.py替换为以下内容之一:

  • 启动交互Shell(推荐):

    python3 script.py
    exec bash  # 若使用zsh则替换为exec zsh
    

    当你用Ctrl-C终止Python后,脚本会自动启动一个交互Shell,tmux窗口不会因脚本退出而关闭,你可以在窗口内继续执行其他命令。

  • 进入无限休眠状态:

    python3 script.py
    while true; do sleep 3600; done
    

    这种方式会让脚本在Python退出后持续休眠,窗口保持存活,但需要手动杀死脚本进程才能关闭窗口。

方法2:配置tmux窗口退出后保留

创建会话时直接启用remain-on-exit选项,让窗口在初始命令退出后不关闭:

tmux new -d -s 'my-session' -n my-window -o remain-on-exit=on '/opt/script.sh'

若会话已创建,可在tmux中执行以下命令修改对应窗口的设置:

tmux set-window-option -t my-session:my-window remain-on-exit on

即使script.sh因Python终止而退出,tmux窗口依然会保留。你可以通过tmux send-keys -t my-session:my-window 'bash' Enter在窗口内启动新的交互Shell。

方法3:直接向Python进程发送SIGINT信号

如果你不想修改脚本或tmux配置,可以通过信号直接终止Python进程:

  1. 查找Python进程的PID:
    pgrep -f 'python3 script.py'
    
  2. 发送Ctrl-C对应的SIGINT信号:
    kill -SIGINT <找到的PID>
    

也可以通过tmux命令模拟发送Ctrl-C按键(效果与手动操作一致,需结合方法1或2避免窗口关闭):

tmux send-keys -t my-session:my-window C-c

内容的提问来源于stack exchange,提问作者Adriaantje

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:57:26