OPENWRT Linux系统路由器命令行及Vim偶发显示异常原因咨询
OpenWrt 偶发命令输出缺失、显示异常问题原因
- 终端传输链路不稳定
无论通过串口还是SSH协议连接路由器,只要传输链路存在丢包、干扰,就会导致命令的标准输出流丢失部分字节,呈现出block info输出字符缺失、分区信息不全的现象,再次执行时链路无丢包即可恢复正常。Vim打开文件时需要批量传输大量字符,链路不稳定时更容易出现显示错乱、内容缺失的同类问题。串口连接可排查波特率匹配、线路干扰问题,SSH连接可排查网络波动、WiFi信号质量问题。 - 系统内存不足
大部分入门级路由器的运行内存容量较小,且OpenWrt默认通常不配置swap交换分区,当后台运行进程占用内存过高时,执行新命令会触发系统内存回收机制,未申请到足够内存的进程会被限制输出、甚至被临时中断,就会出现输出不全的现象,再次执行时刚好有进程释放内存即可恢复正常。可执行dmesg命令查看系统日志是否存在OOM(内存溢出)相关报错,执行free -h可实时查看当前内存占用情况。 - 存储介质IO不稳定
若设备使用的SPI原生闪存存在坏块,或是外接的USB存储设备存在接触不良、供电不足的问题,读取分区表、文件内容时就会出现偶发IO错误:执行block info读取分区信息失败就会出现分区消失的情况,Vim读取文件内容失败就会出现内容缺失,重试时IO临时恢复就会显示正常。可执行dmesg查看系统日志是否存在blk_update_request、I/O error相关的存储报错。 - 系统资源被抢占
若后台正在运行高负载进程(如大文件传输、BT下载、网速检测等),CPU、IO资源会被高优先级进程占满,block info、Vim这类低优先级进程无法获取足够的资源完成读取、输出操作,就会出现输出截断、内容不全的问题,等待后台负载降低后再次执行即可恢复正常。可执行top命令实时查看系统CPU、内存的占用情况,定位高负载进程。
内容的提问来源于stack exchange,提问作者Z-Buffer
相关产品推荐
相关产品推荐

