我们正在从ubuntu 14迁移到ubuntu 16。
我有以下新手任务:
description "Start multiple Resque workers."
start on runlevel [2345]
task
env NUM_WORKERS=4
script
for i in `seq 1 $NUM_WORKERS`
do
start resque-work-app ID=$i
done
end script
正如你所看到的,我有4名工人,我已经开始了。然后有一个新手脚本启动这些工作人员中的每一个:
description "Resque work app"
respawn
respawn limit 5 30
instance $ID
pre-start script
test -e /home/opera/bounties || { stop; exit 0; }
end script
exec sudo -u opera sh -c "<DO THE WORK>"
我如何在systemd中做类似的事情?我特别感兴趣的是如何迭代4的序列,并为每个序列启动一个工人 - 这样,我就有了4个工人的集群。
答案 0 :(得分:1)
systemd
没有迭代语法,但它仍然具有帮助解决此问题的功能。 systemd
提供的相关概念是:
使用systemd,您可以运行一次性bash循环作为设置服务的一部分,该服务将启用所需数量的工作人员:
for i in `seq 1 4`; { systemctl enable resque-work-app@1; }
假设您有一个resque-work-app@.service
文件,其中包含以下内容:
[Install]
WantedBy=resque-work-app.target
而且你有一个resque-work-app.target
,其中包含:
[Unit]
Description=Resque Work App
[Install]
WantedBy=multi-user.target