【问题标题】:starting and stopping multiple daemons with upstart使用 upstart 启动和停止多个守护进程
【发布时间】:2013-08-28 05:10:19
【问题描述】:

如何启动多个守护进程,它们是“非”实例,它们是不同的守护进程。我使用了以下脚本,但新贵在停止守护程序并重新启动它们后挂起。

#ubuntu upstart script for antkorp services 
description "Antkorp colloboration and communication platform"
author "www.antkorp.in"

task
start on runlevel [2345]
stop  on runlevel [016]

pre-start script
        logger -t "antkorp:" "antkorp platform booting...";
end script

post-start script
        logger -t "antkorp:" "antkorp platform started successfully.";
end script

pre-stop script
        logger -t "antkorp:" "antkorp platform stopping..";
end script

post-stop script
        logger -t "antkorp:" "antkorp platform stopped successfully.";
end script

这里是一个守护进程的初始化文件。

description     "antkorp gw daemon"

start on starting akorp
stop on stopping akorp

expect fork
respawn

pre-start script
logger -t "gw:" "antkorp gw daemon about to start.";
end script

exec /home/rk/gw

post-start script
logger -t "gw:" "antkorp gw daemon started successfully.";
end script

pre-stop script
logger -t "gw:" "antkorp gw daemon stopping ...";
end script

post-stop script
logger -t "gw:" "antkorp gw daemon stopped.";
end script

手动“停止”工作正常,但“启动”挂起。请指教。

这里是守护进程源代码。

#include<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<stdlib.h>

void 
sigterm_handler(int signo)
{
    exit(1);
    return;
}

int 
main(int ac, char **av) 
{
    signal(SIGTERM, sigterm_handler);
    daemon(0,0); 
    while(1) sleep(1); 
    return 0; 
}

【问题讨论】:

  • 我使用 'daemon' 函数来守护进程。你可以在守护进程配置文件中看到'expect fork'。
  • "sudo stop gw" 和 "sudo start gw" 命令可以在没有挂起的情况下正常工作。

标签: upstart


【解决方案1】:

经过多次尝试和错误终于自己解决了。从主脚本“akorp.conf”文件中删除“task”关键字即可解决问题。

【讨论】:

    最近更新 更多