前言:一个让人抓狂的场景
在日常办公中,很多公司都会使用群晖NAS作为文件共享服务器。但当某个同事正在编辑Excel或Word文档时,电脑突然蓝屏死机、强制关机或网络断线,紧接着整个办公室就炸锅了——其他所有人都只能只读打开这个文件,一编辑就提示"文件已被XX占用"。
此时,那个死机的同事可能已经下班走人,甚至电脑还没重启。作为管理员,你该怎么办?

问题根源:SMB协议的文件锁机制
这一切的罪魁祸首是SMB(Server Message Block)协议的文件锁机制。当用户通过SMB打开一个文件时,NAS会为这个文件创建一个锁定记录,防止多人同时编辑造成数据冲突。正常关闭文件时,锁会自动释放。
但如果用户电脑非正常断开(死机、断电、强制关机),SMB会话没有机会发送"我关文件了"的信号,导致NAS认为这个会话还在活跃,文件锁一直挂着。
解决方案:通过SSH手动杀死僵尸进程
群晖DSM后台界面无法直接释放单个文件的锁,我们需要通过SSH登录NAS,用命令行精确"狙击"那个卡死的进程。
第一步:开启群晖SSH功能
登录群晖DSM网页管理界面
打开 控制面板 → 终端机和SNMP
勾选 启动SSH功能,端口保持默认的22(或自定义)
点击 应用
![开启SSH功能示意图]
⚠️ 安全问题:用完记得关掉SSH,避免成为黑客攻击入口。
第二步:SSH远程登录NAS
打开你电脑的命令行工具:
Windows:按
Win+R,输入cmdmacOS/Linux:打开终端(Terminal)
输入以下命令(替换成你NAS的实际信息):
ssh admin@你的NAS的IP地址 -p 22admin:NAS的管理员账号你的NAS的IP地址:例如 192.168.1.100-p 22:SSH端口号,默认22
首次连接会提示确认指纹,输入 yes 回车。然后输入管理员密码(输入时不显示,正常敲完回车即可)。
第三步:切换到root管理员权限
登录后,你发现直接运行 smbstatus 会报错:
smbstatus only works as root!因为查看SMB会话状态需要root权限。输入以下命令切换到root:
sudo -i再次输入管理员密码,提示符从 $ 变成 #,说明已是root用户。
第四步:查找卡死的文件进程
使用 smbstatus 命令查看所有当前的SMB连接:
smbstatus输出会很多,重点关注第一列(进程PID)和最后一列(文件路径):
PID UID DENY_MODE ACCESS ... FILE
14474 1493 DENY_WRITE WRONLY ... /volume1/共享文件夹/销售部/2026对账单/2236移远.xlsx
14474 1493 DENY_WRITE RDWR ... /volume1/共享文件夹/销售部/2026对账单/~$2236移远.xlsx关键信息:
PID(第一列):进程ID,例如
14474文件路径(最后一列):被锁死的文件完整路径
临时文件:
~$开头的文件是Excel/Word生成的锁标记文件
第五步:用grep精准筛选目标文件
如果SMB连接很多,可以用grep过滤出你关心的那个文件:
smbstatus | grep "2236移远.xlsx"或者过滤特定用户:
smbstatus | grep "死机同事的用户名"第六步:kill掉卡死的进程
找到PID后,用 kill 命令强制终止这个进程:
kill -9 14474-9是强制终止信号,不给进程任何清理机会
关键点:只杀掉这一个进程,其他同事的编辑会话完全不受影响,不像 smbcontrol close-share 会把整个共享文件夹的人全踢掉。
第七步:验证结果
让同事重新打开那个文件,应该可以正常编辑了。如果需要确认进程已消失:
ps aux | grep 14474没有任何输出就说明杀干净了。

第八步:收尾工作
退出root用户:输入
exit退出SSH连接:输入
exit回到DSM控制面板,关闭SSH功能
完整命令速查表
常见问题FAQ
Q:为什么删掉~$开头的临时文件也能解决问题?
A:~$2236移远.xlsx 是Excel的锁定标记文件,只要它存在,Excel就认为文件被占用。删掉它,锁就释放了。但这个方法不一定100%有效,因为主进程可能还在。
Q:kill -9 会不会损坏文件?
A:不会。如果用户已经保存过内容,文件数据已经在NAS上了。kill -9 只是断掉这个SMB会话,可能会丢失该用户最后一次未保存的修改,但文件本身是安全的。
Q:如果文件还在被编辑,我能强制获取编辑权吗?
A:可以,但这个操作会强行抢占,可能导致正在编辑的人丢数据。建议先确认死机同事确实不在线,再用这个方法。
Q:我执行smbcontrol smbd close-share "共享文件夹"把所有人都踢了,怎么办?
A:不用担心,大家重新打开文件就能连回来。但这个方法太粗暴,不建议常规使用。
预防措施
设置较短的SMB会话超时:在群晖控制面板 → 文件服务 → SMB → 高级设置中,调整"会话超时"时间。
养成好习惯:提醒同事离开工位前随手保存并关闭文件。
启用文件版本管理:群晖的Snapshot Replication(快照)功能可以定期备份文件版本,即使文件损坏也能恢复。
考虑使用Office Online协同编辑:如果有条件,可以部署Office Online或OnlyOffice等协同编辑方案,多人同时在线编辑,彻底告别文件锁问题。
结语
群晖NAS作为一款优秀的存储设备,SMB文件锁是保护数据一致性的必要机制。但当异常发生时,掌握通过SSH精确kill进程的技能,是每个NAS管理员的必备技能。
记住核心思路:
SSH登录 → 2. 切root → 3. smbstatus查PID → 4. grep过滤 → 5. kill -9干掉 → 6. 收工
整个过程熟练的话三分钟搞定,比重启SMB服务、重启NAS要精准高效得多,也不会影响到其他正在正常办公的同事。
📌 最后提醒:操作有风险,建议先在测试环境熟悉一遍流程。生产环境操作前最好确认一下那个"死机"的同事确实已经离线。
希望这篇博客能帮到你,如果有任何问题,欢迎留言交流!😊
群晖NAS共享文件被"僵尸"进程锁死?三分钟搞定SSH远程解锁
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法