确定Samba挂载点是否在Linux上死机的最佳(最快)方法是什么? 我需要在C中执行它。像stfs(),statvfs()这样的系统调用在stale mount上调用时会阻塞30-40秒,在这种情况下它们甚至不会返回错误。 stat()似乎比其他人(大约10秒)更快失败并返回错误。挂点可能会变得陈旧,因为其他主机发生故障或Samba守护程序被杀死。 任何建议表示赞赏..
答案 0 :(得分:1)
您可以设置闹钟(请参阅alarm()
和setitimer()
)几秒后超时。
答案 1 :(得分:0)
好吧,我不知道怎么做更快的检查,但我建议你同时检查所有挂载点,并行,所以你总是会有相同的总时间,即使有很多samba坐骑
答案 2 :(得分:0)
我正在回答我自己的问题。目标是最小化尝试访问陈旧挂载点的多个进程所花费的时间。通常,系统调用将在亚秒时间内完成。在陈旧的股票上封锁10秒,甚至比如3秒是不可接受的,因为这些调用是在多个地方完成的,多次,并且延迟时间累积。 因此,我最终编写了一个监视进程,每隔n秒检查一次安装,如果无法访问则卸载它们。我还从我的配置中读取信息,说明哪些文件系统应该是远程(已安装)并检查mtab文件 - 如果它们不在那里,那就是错误。代码检查mtab在亚秒内完成。 花了一两天才实现,但对我来说效果很好。