正在执行脚本时,网络断开了该怎么办?

正在执行脚本时,网络断开了该怎么办?

很多情况下,我们会通过ssh连接服务器。如果我们执行了一个耗时的脚本后网络中断了,ssh也就会中断。等我们发现这一问题并重新建立起ssh连接后,耗时脚本的打印输出基本不会恢复。我们认为断开网络之后脚本可能会继续执行,也有可能突然被进程终止。今天主要来分享的是两个命令:screen和tmux。

这两个命令都能很好地帮助我们处理一些异常情况。当然,它们是需要通过包管理器额外安装的。

场景

有的脚本需要一次性完整地运行,中间如果有中断,就得重新运行。对于耗时的脚本来说(例如超过十分钟),因为网络中断的原因,我们并不知道它是完成了任务还是被中断了。多次执行就很耗时间,甚至导致不可预测的结果。

所以,运行脚本前先进入screen或tmux的环境中,再开始运行,就算网络中断,也不担心脚本会突然终止运行!

好处

不需要工程师一直盯着脚本运行,尤其是一些脚本没有输出。可能会发生网络中断,为了远程ssh不中断,就要间歇性地按下键盘上的某些案件。也可以去配置ssh的keepalive功能,通过间歇性地发送数据包来保持连接活跃,但这并不方便。

screen

bash 复制代码
screen -S name # 创建一个会话

ctrl A D
# 或
ctrl A加ctrl D # 退出会话

screen -ls # 列出所有会话

screen -r NAME # 连接会话
# NAME与name并不完全相同,NAME会多一个前缀,可通过-ls查看后找到

tmux

bash 复制代码
tmux new -s name # 创建会话

ctrl B D # 退出会话

tmux ls # 列出所有会话

tmux attach -t name # 连接会话

这两个命令的快捷键特别多,只需要掌握一部分,其他的等到需要的时候再去查找。

bash 复制代码
# 查找 screen 的快捷键
man screen

# 查找 tmux 的快捷键
man tmux
相关推荐
xixixi7777711 小时前
解析一下传输安全——“它是什么”,更是关于“它为何存在”、“如何实现”以及“面临何种挑战与未来”
网络·安全·通信
jerryinwuhan13 小时前
socket由浅入深
网络
xu_yule15 小时前
网络和Linux网络-3(套接字编程)TCP网络通信代码
linux·网络·tcp/ip
喜欢吃豆16 小时前
使用 OpenAI Responses API 构建生产级应用的终极指南—— 状态、流式、异步与文件处理
网络·人工智能·自然语言处理·大模型
xixixi7777716 小时前
解析一下存储安全——“它是什么”,更是关于“它为何存在”、“如何实现”以及“面临何种挑战与未来”
网络·安全·通信
运维有小邓@16 小时前
实时日志关联分析工具:智能检测潜在安全威胁
运维·网络·安全
j***576817 小时前
电脑可以连接wifi,但是连接后仍然显示没有网络
网络·电脑·php
brave and determined18 小时前
接口通讯学习(day04):RS-232与RS-485:通信接口全解析
网络·uart·通讯·emc·rs232·rs485·嵌入式设计
檀越剑指大厂18 小时前
在家也能远程调代码?WSL+cpolar 的实用技巧分享
网络
秋邱18 小时前
价值升维!公益赋能 + 绿色技术 + 终身学习,构建可持续教育 AI 生态
网络·数据库·人工智能·redis·python·学习·docker