Linux守护进程启动

时间:2012-08-01 11:50:22

标签: linux linux-kernel daemon redhat

我在linux上写了一个服务(Redhat Server Edition 5.1)。这是由shell scritpt启动的, 如果我启动我的应用程序,我手动启动我的服务,现在我想在启动时启动我的服务,通过我的服务在我的守护程序的init.d文件夹不在启动时调用,任何有想法如何开始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

4 个答案:

答案 0 :(得分:3)

在你的剧本中添加2条评论:

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

以root身份运行:

chkconfig --add my_service

答案 1 :(得分:3)

基本的unix守护程序执行以下操作:

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

(C:daemon.c中的例子)

Red Hat关于如何安装启动脚本的示例:

在redhat的系统启动时启动一个deamon你需要一个init脚本。 它应该放在/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

第一行将告诉chkconfig以优先级99启动运行级别3的守护程序,并在服务器关闭时将其作为优先级1终止。

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

立即启动使用:服务启动

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

希望这有点帮助!

答案 2 :(得分:0)

不同的Linux发行版包括不同的服务管理工具。您应该查看launchdOpenRC(出现在Gentoo上)和SystemD(例如,在Arch上)

希望这会有所帮助:)

答案 3 :(得分:0)

chkconfig --add your_service_name