Mac使用lrzsz的rz命令重复弹出文件上传UI问题排查
以下是可能导致该问题的几个常见原因及对应的排查方向:
终端模拟器与lrzsz的兼容性bug
像iTerm2这类主流终端的旧版本,和lrzsz的zmodem交互逻辑存在漏洞。当服务器端的rz命令发送握手信号时,终端可能会多次捕获到相同信号,进而重复触发文件选择UI。即使你取消后续弹窗,首次选择的文件已经完成了传输流程,所以上传仍能正常完成。
建议升级终端到最新稳定版本,或者检查终端内zmodem相关的监听配置,确保信号只被处理一次。Mac与服务器的lrzsz版本不兼容
本地Mac安装的lrzsz版本和Linux服务器上的版本差异过大时,双方的通信握手流程可能出现异常。比如服务器端重复发送确认指令,而本地终端无法正确识别“已处理”状态,导致反复弹出选择窗口。
可以将两端的lrzsz都升级到相同的稳定版本(如0.12.20)后再测试。zmodem触发脚本的信号处理遗漏
即便你没发现脚本里的循环逻辑,也可能存在信号处理的疏漏。比如脚本在触发文件选择后,没有标记“正在处理”的状态,导致后续相同的握手信号再次触发UI。
可以给脚本加个简单的锁机制:在脚本开头检查是否存在/tmp/rz_processing.lock临时文件,存在则直接退出;不存在则创建该文件,等文件上传流程完成后再删除这个锁文件。临时文件残留导致的异常
Mac上lrzsz运行时生成的临时文件(比如/tmp/zmodem*开头的文件)如果没有被正常清理,可能会干扰后续的rz命令执行,触发重复的UI弹窗。
手动删除/tmp目录下所有zmodem相关的临时文件,再重新执行rz命令测试。
内容的提问来源于stack exchange,提问作者Mukha

