我有一个非常简单的upstart配置来维护yas3fs挂载。
start on filesystem
stop on runlevel [!2345]
respawn
kill timeout 15
oom never
expect fork
script
. /etc/s3.env
export AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY
exec /opt/yas3fs/yas3fs.py /mnt/something --url=s3://something --cache-path=/mnt/s3fs-cache --mp-size=5120 --mp-num=8
end script'
我会得到两份yas3fs.py正在运行的副本。一个似乎正确安装了s3存储桶,但另一个显然是由暴发户重新生成(可能是因为另一个正在运行而导致错误)。
如果我投入“期望分叉”,则该作业永远无法正常启动。我只是想让这个简单的安装能够安全地重新启动,停止等作为一个暴发户的工作。想法?
答案 0 :(得分:1)
我不是新手专家,但这个脚本应该有效:
start on (filesystem and net-device-up IFACE=eth0)
stop on runlevel [!2345]
env S3URL="s3://BUCKET[/PREFIX]"
env MOUNTPOINT="/SOME/PATH"
respawn
kill timeout 15
oom never
script
MOUNTED=$(mount|grep " $MOUNTPOINT "|wc -l)
if [ $MOUNTED = "1" ]; then
umount "$MOUNTPOINT"
fi
exec /opt/yas3fs/yas3fs.py "$MOUNTPOINT" --url="$S3URL" --mp-size=5120 --mp-num=8 -f
end script
pre-stop script
umount "$MOUNTPOINT"
end script
诀窍是使用'-f'选项将yas3fs保留在前台,似乎有太多的分叉要管理。
如果yas3fs以某种错误方式死亡(例如“kill -9”),我添加了一个检查来清理(即卸载)挂载点。