打开共享文件提示另一个程序已锁定文件的一部分,怎么解除占用

公司共享盘上的一个 Excel 报表,同事甲开着改数,同事乙再打开就弹窗:“另一个程序已锁定文件的一部分,进程无法访问”,只能点只读。更烦的是另一种情况:甲说自己明明把文件关了,乙这边还是打不开,提示原样——锁到底卡在哪儿,怎么解除?

原因分析

这是 SMB 共享的文件级锁机制在起作用。共享服务为了保证数据一致,给每个被打开的文件登记锁状态:一个用户以可写方式打开文件后,服务端记下这笔占用,后来的打开请求就被降级成只读,窗口上那句"另一个程序已锁定"说的就是这件事。正常情况下,关闭文件时锁自动释放;锁残留多半出自三种情形——一是打开方异常退出(程序崩溃、电脑蓝屏、笔记本合盖睡眠、网线被碰掉),服务端没收到关闭请求,还以为文件被占着;二是办公软件在同目录留下的临时锁文件(名字以 ~$ 开头的隐藏文件)没被清理,软件重开时误判文件仍在编辑中;三是半夜跑的备份、杀毒扫描、索引服务路过这个文件时短暂上锁,正好撞上早晨开单的时间。分清这三种,处理就有的放矢。

分步解决

  1. 先在服务端查占用。登录 NAS 或文件服务器的管理界面,在"已连接的用户/打开的文件"(有的系统叫文件打开记录)里搜这个文件名,能看到它被哪个工作站、哪个账户、从几点起打开着——这是判断占用来源的直接证据。
  2. 问一圈当事人。拿着查到的账户去找人:文件是不是还开着没关?办公软件是不是缩到托盘角落还在后台挂着?让对方把程序退出干净(不是只关窗口)再试。多数卡锁在这一步就解了。
  3. 清掉临时锁文件。各方都确认关闭后仍提示锁定的,在共享目录里开"显示隐藏文件",把与该报表同名的 ~$ 开头文件删掉,再打开试一次。删之前务必确认没人正开着,这个文件本身就是编辑状态的标记。
  4. 服务端断开该文件的会话。还打不开的话,回到第 1 步的打开文件列表,只针对这一个文件执行"断开/关闭打开的文件",影响范围就是这一笔,比重启整个共享服务温和得多。
  5. 兜底重启文件服务。以上都无效(常见于服务端锁表出错),在业务低峰重启 SMB 服务,一般几十秒内恢复,期间共享短暂不可用,提前在群里说一声即可。不要试图强行删文件或直接拔盘,那会把小问题变成数据问题。

预防

协作方式上约定好:一张共享报表同一时间一人主编辑,其他人只读,需要多人同时改的表挪到在线表格里去;把备份、杀毒的扫描计划避开早晨开单的高峰时段;“查占用、断会话"这几步整理成一张小卡片放在共享目录里,接手的人照着点就行。诚鑫致达科技排这类共享占用,习惯先问一句最近谁动过这个文件、再去翻服务端的打开记录——顺序反了,容易把正在干活的同事误当成故障源。