linux – 如何检测init.d脚本中是否存在挂载点?

linux – 如何检测init.d脚本中是否存在挂载点?,第1张

概述重启后,我正在使用init.d脚本从已挂载的网络共享(autofs)执行应用程序.脚本在尝试执行命令之前等待30秒,以等待网络/挂载点启动. 在执行命令之前,我想以某种方式检测到网络确定已启动且安装已明确安装. 您对如何使用此脚本实现此目的(在CentOS 6.4中)的建议是什么? 这就是我现在拥有的: #!/bin/bash## chkconfig: 3 95 5# description 重启后,我正在使用init.d脚本从已挂载的网络共享(autofs)执行应用程序.脚本在尝试执行命令之前等待30秒,以等待网络/挂载点启动.

在执行命令之前,我想以某种方式检测到网络确定已启动且安装已明确安装.

您对如何使用此脚本实现此目的(在CentOS 6.4中)的建议是什么?

这就是我现在拥有的:

#!/bin/bash## chkconfig: 3 95 5# description: My app# processname: my-app## Sleep for 30 seconds before attempting to execute commandsleep 30s# Get function from functions library. /etc/init.d/functions# Start the service my-app from autofs mountstart() {        echo -n "Starting my-app: "        /share/path/my-app --log /tmp/log.log --supersede        ### Create the lock file ###        touch /var/lock/subsys/my-app        success $"my-app startup"        echo}# Restart the service my-appstop() {        echo -n "StopPing my-app: "        killproc my-app        ### Now,delete the lock file ###        rm -f /var/lock/subsys/my-app        echo}### main logic ###case "" in  start)        start        ;;  stop)        stop        ;;  status)        status my-app        ;;  restart|reload|condrestart)        stop        start        ;;  *)        echo $"Usage: 
while ! test -f /mnt/over-there/this/file/heredo    sleep 1done
{start|stop|restart|reload|status}" exit 1esacexit 0
解决方法 init脚本按S ##数字定义的顺序启动.较新版本的Unix(至少在linux上)并行启动相同的##数字(虽然您可以关闭该功能…)所有必须使用的##位于网络和fsmount编号之后.然后它应该工作.但是,如果fsmount在后台启动,最简单的可能是探测已安装驱动器上的文件.像这样的东西:
while ! mountpoint -q /mnt/over-theredo    sleep 1done

这将等到文件出现.如果还没有,请睡一会儿然后再试一次.

为避免某人创建您在本地计算机上测试的文件的潜在问题,您可能希望使用mountpoint命令行,如:

count=0while ! test -f /mnt/over-there/this/file/heredo    sleep 1    count=`expr $count + 1`    if test $count -eq 30    then        echo "timed out!"        exit 1    fidone

(来自下面的评论.)-q是使命令安静.

—更新:30次尝试后超时

在shell脚本中,您还可以计算和测试数字:

ConditionPathIsMountPoint=/mnt/over-there

如果计数达到30(30秒的睡眠加上检查文件是否可用所需的时间),这将停止,之后它会输出错误消息“timed out!”.

—更新:如果你要切换到systemd

使用systemd,Unit section支持:

它与上面的脚本完全相同,没有超时.此语句阻止在装入存在之前启动命令.

总结

以上是内存溢出为你收集整理的linux – 如何检测init.d脚本中是否存在挂载点?全部内容,希望文章能够帮你解决linux – 如何检测init.d脚本中是否存在挂载点?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1037881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存