2012-08-01 202 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