linux - 已安装的 samba 共享 - 如何检查它是否在线

标签 linux bash mount samba

我需要在脚本中检查 mounted 是否在线。 并在最短 1 秒内完成检查。

我试过:

  1. smbclient -L -U user%pass - 但它需要太多时间,并且由于重新登录而在目标服务器日志文件中造成垃圾

  2. stat/mnt/samba/file - 但当 samba 共享离线时它卡住了

也许你们中的一个人会帮助找到另一种方法来完成它?

目标 samba 使用 SMB3.0 协议(protocol)。

问候

最佳答案

从编程的角度来看,这比看起来要难。 为了确定我会说你必须在那里创建一个文件或尝试读取一个目录。 但是 linux 不支持异步 open system call 这也是实用程序长时间挂起超时的原因(我猜应该是大约 2 分钟,这是 TCP 死亡最小超时) 因此,如果您要实现这一点,您应该施加一些更小的超时,尝试在目标文件夹上进行 stat 或 open 调用,并在超时到期时终止线程(或在那里发送信号)。

关于linux - 已安装的 samba 共享 - 如何检查它是否在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52298719/

相关文章:

Bash:检查条目是否为一行的 native 方法?

c - C语言系统调用挂载ecryptfs

android - adb remount 失败 - mount : 'system' not in/proc/mounts

linux - 我如何在 Linux 中的特定文件中创建 cron 作业

linux - 使用 -fPIC 重新编译 makefile

linux - 如何对 AwesomeWM 文本时钟小部件实现序数日?

bash - 如何通过SSH(使用Bash)从多个来源输出主机列表的数据

linux - 从 bash 脚本变量回显 stderr 和 stdout 到文件

java - 如何在 Windows 上反射(reflect)来自 JAR 的类

device-driver - Lostup -d 不工作