2012-08-01 203 views
3

我在linux上编写了一个服务(Redhat Server Edition 5.1)。这是通过shell scritpt启动的, 在我启动我的应用程序的情况下,我手动启动我的服务,现在我想在启动时启动我的服务,通过手段我把我的服务放在init.d文件夹中,我的守护进程不会在启动时调用时间,任何有想法如何启动一个守护进程在Linux上启动时?Linux守护进程启动

这是我的样品,但不工作

#!/bin/sh 
# 
# myservice  This shell script takes care of starting and stopping 
#    the <myservice> 
# 

# Source function library 
. /etc/rc.d/init.d/functions 


# Do preliminary checks here, if any 
#### START of preliminary checks ######### 


##### END of preliminary checks ####### 


# Handle manual control parameters like start, stop, status, restart, etc. 

case "$1" in 
    start) 
    # Start daemons. 

    echo -n $"Starting <myservice> daemon: " 
    echo 
    daemon <myservice> 
    echo 
    ;; 

    stop) 
    # Stop daemons. 
    echo -n $"Shutting down <myservice>: " 
    killproc <myservice> 
    echo 

    # Do clean-up works here like removing pid files from /var/run, etc. 
    ;; 
    status) 
    status <myservice> 

    ;; 
    restart) 
    $0 stop 
    $0 start 
    ;; 

    *) 
    echo $"Usage: $0 {start|stop|status|restart}" 
    exit 1 
esac 

exit 0 

回答

3

放2条评论到脚本:

# chkconfig: - 90 10 
# description: description of your service 

以root身份运行:

chkconfig --add my_service 
+0

什么事情发生增加了两个注释行到该脚本我不能得到你, – 2012-08-01 12:06:23

+0

这些行会告诉chkconfig的你的脚本应该运行的运行级别以及启动和停止的优先级。看到这个:http://linux.die.net/man/8/chkconfig – yanjost 2012-12-04 15:39:33

+0

如果服务已经列出,你可能需要运行chkconfig --del my_service,然后再执行--add – 2014-04-01 20:17:14

0

不同的Linux发行版都包含不同的服务管理设施。你应该看看launchdOpenRC(目前在Gentoo)和SystemD(拱,例如)

希望这有助于:)

+0

啊我没有看到它是特定于RedHat的。无论如何,我会为未来的读者留下我的答案。 – qdii 2012-08-01 11:59:30

+0

Nitpick:这是“systemd”(没有大写字母),正如您在链接到的页面上指出的:)。另外,systemd附带Fedora,Arch,Mageia,Mandriva,openSUSE,Chakra,NixOS和Frugalware。它在Debian和Gentoo上可用(但不是默认的init系统)。然而launchd的似乎只有在Mac OS X中使用,另见http://en.wikipedia.org/wiki/Launchd – Michael 2013-03-19 13:46:36

0

的chkconfig --add your_service_name

3

一个基本的UNIX守护程序将执行以下操作:

fork 
close all filedescriptors (stdout,stderr, etc) 
chdir/
signal handeling (sighup, sigterm etc) 
while 
do stuff 
sleep(xx) 
done 

(例如C:daemon.c)关于如何安装启动脚本

红帽例如:

在启动一个守护进程在redhat系统启动你需要一个初始化脚本。 应该放置在/etc/init.d的init脚本

例如:

代码:

# chkconfig: 3 99 1 
# description: my daemon 

case "$1" in 
'start') 
/usr/local/bin/mydaemon 
;; 

'stop') 
pkill mydaemon 
;; 

'restart') 
pkill -HUP mydaemon 
;; 

esac 

第一行会告诉命令行工具来启动运行级别3具有优先级的守护99并在服务器关闭时将其作为优先级1关闭。

要安装启动脚本,请使用以下命令:chkconfig --add ./scriptabove 现在,它将在服务器引导时启动。

启动它马上使用:服务启动

如果您想了解更多的细节信息,请访问a link

希望这有助于有点!

+0

,但是当我像这样添加我会得到一个错误,检查配置不支持 – 2012-08-01 12:31:44