如何使用yas3fs创建工作新手工作?

时间:2013-10-04 03:37:14

标签: linux ubuntu amazon-web-services amazon-s3 upstart

我有一个非常简单的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存储桶,但另一个显然是由暴发户重新生成(可能是因为另一个正在运行而导致错误)。

如果我投入“期望分叉”,则该作业永远无法正常启动。我只是想让这个简单的安装能够安全地重新启动,停止等作为一个暴发户的工作。想法?

1 个答案:

答案 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”),我添加了一个检查来清理(即卸载)挂载点。