创建一个文本文件以保存etc / init.d的多个服务

时间:2013-11-21 00:48:19

标签: linux init.d ubuntu-13.10

在我的应用运行之前,我有3个需要启动的服务(postgresql,redis,elasticsearch)。我的问题是,我可以将3合并到一个文件/脚本中,所以每次我想运行这些服务时我都会点击/etc/init.d/services start,如果我完成了我只会做一个/etc/init.d/services stop而不是手动停止其中3个?

2 个答案:

答案 0 :(得分:1)

是的,您必须在/etc/init.d中为此编写自己的脚本 你将不得不处理这样的事情:

#!/bin/sh

# service name
SERVICE_NAME=Liferay
# directory where are stored service bin
SERVICE_DIRECTORY=/opt/Portal/bin
# startup service script
SERVICE_STARTUP_SCRIPT=startup.sh
# stop service script
SERVICE_SHUTDOWN_SCRIPT=shutdown.sh

usage()
{
        echo "-----------------------"
        echo "Usage: $0 (stop|start|restart)"
        echo "-----------------------"
}

if [ -z $1 ]; then
        usage
fi

service_start()
{
        echo "Starting service '${SERVICE_NAME}'..."
        OWD=`pwd`
        cd ${SERVICE_DIRECTORY} && ./${SERVICE_STARTUP_SCRIPT}
        cd $OWD
        echo "Service '${SERVICE_NAME}' started successfully"
}

service_stop()
{
        echo "Stopping service '${SERVICE_NAME}'..."
        OWD=`pwd`
        cd ${SERVICE_DIRECTORY} && ./${SERVICE_SHUTDOWN_SCRIPT}
        cd $OWD
        echo "Service '${SERVICE_NAME}' stopped"
}

case $1 in
        stop)
                service_stop
        ;;
        start)
                service_start
        ;;
        restart)
                service_stop
                service_start
        ;;
        *)
                usage
esac
exit 0

只需在start()stop()restart()

中添加其他服务即可

答案 1 :(得分:0)

即使它有效,我也不认为这是正确的做法。已设置initd,以便您可以为启动和停止服务的顺序设置不同的优先级。

如果查看chkconfig手册,可以看到启动和停止值的优先级含义。这将确保您的服务将按照所需的顺序启动。唯一的考虑因素是,当服务无法启动时,对于这种情况,没有通知其他服务。在这种情况下,您可以添加代码以轮询initd脚本上的状态,以查询服务的状态,或者只是让您的服务稍后进行投诉。