我正在从我们的web服务器隧道到我们的MySQL服务器,两者都在Solaris盒上。我为ssh隧道创建了一个SMF清单,以便在web服务器框重新启动时重新连接。这个很好用。
问题是,当MySQL盒重新启动时,我不知道该做什么。隧道的这一外部关闭被传递给SMF,SMF试图连续3次快速重新启动隧道,然后将服务投入维修模式。是否有一种方法来指定“重试-每一个”或类似的东西?我还有别的办法来解决这个问题吗?
这是我用的SMF。
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='ssh-tunnel'>
<service
name="network/ssh-tunnel"
type="service"
version="1">
<create_default_instance enabled="false"/>
<single_instance />
<dependency
name='nameservice'
type='service'
grouping='require_all'
restart_on='none'>
<service_fmri value='svc:/milestone/name-services' />
</dependency>
<exec_method
type='method'
name='start'
exec='/usr/bin/ssh -fNx -L 3307:127.0.0.1:3306 mysql1'
timeout_seconds='0'>
</exec_method>
<exec_method
type='method'
name='stop'
exec=':kill'
timeout_seconds='0'>
</exec_method>
</service>
</service_bundle>发布于 2011-05-12 07:42:13
您可以在exec变量的“exec_method”部分指定执行timeout_seconds命令之间的等待时间。如果您将其设置为60,它将立即尝试,等待1分钟,然后再试,等待和尝试。您要设置的值取决于MySQL框引导的方式。
另一种方法是将sleep命令指定为exec的一部分,例如,在运行ssh之前等待1分钟:
exec='sleep 60 && /usr/bin/ssh -fNx -L 3307:127.0.0.1:3306 mysql1'hth,
https://serverfault.com/questions/268687
复制相似问题