这与在没有SSH连接或打开文件的情况下closures很less使用的服务器有关。
如何在shell脚本(Linux机器上的cron作业)中确定当前的samba共享是否有任何打开的文件?
如果你的samba服务器被configuration为使用文件locking,那可能是,我想你可以使用'smbstatus -L'来列出锁,然后grep你正在寻找锁的types的输出(EXCLUSIVE,BATCH)if你知道你只关心某种锁。
就像是:
smbstatus -L | grep EXCLUSIVE
然后在cron作业脚本中针对返回值($?)进行testing。
不幸的是,我对锁的types知之甚less,不知道这是否适用于所有方法。
我可能会使用lsof命令来确定共享上正在使用哪些文件。
lsof | grep /path/to/share lsof | grep /path/to/share应该显示正在使用的文件。
Cense的答案是好的,而他关于锁的事情适用于这个答案。 Samba还允许只读状态(我认为它显示为RD_ONLY),并且还显示在Windows资源pipe理器中打开的目录的条目,因此您必须决定要忽略/关注哪种types的锁。
我相信smbstatus的输出是No machines connected. ,如果没有连接机器,那么你可以使用smbstatus|grep No\ machines\ connected && shutdown来closures没有连接的东西。
据我所知(现在无法访问Samba服务器),如果您在Windows中安装了Samba共享, smbstatus将显示Windows机器已经连接,即使用户没有主动使用共享,您可能还需要根据这种情况决定如何处理。