【问题标题】:Mounted samba share - how to check if it is online挂载的 samba 共享 - 如何检查它是否在线
【发布时间】:2018-09-12 15:26:24
【问题描述】:

我需要在脚本中检查挂载是否在线。 并在最长 1 秒的时间内完成检查。

我试过了:

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

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

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

目标 samba 使用 SMB3.0 协议。

问候

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • 你说的不对。这是严格的主题。那么如何开发与samba相关的软件呢?我需要在脚本中编写一个测试。

标签: linux bash mount samba


【解决方案1】:

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

【讨论】:

  • 我可能真的不在这里了,因为我以前从未使用过 samba,但不能 OP 使用 timeout 的数字,该数字仅略高于对读取文件的命令的成功读取尝试?例如。如果读取文件的时间不超过 1 秒,OP 可以使用 timeout 2 或类似的东西,然后检查命令的输出。 (明确一点:我说的是 UNIX 工具 timeout。)
  • @confetti stat 是一个系统调用,您不能中断等待 IO 的内核进程。这就是问题的根源。可能用户空间返回,但你有一个僵尸内核进程。
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 2022-11-10
  • 2012-03-25
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多