5

Linux(Redhat Server Edition 5.1)で1つのサービスを作成しました。これはシェルスクリプトによって開始されます。アプリケーションを起動するときに手動でサービスを開始する場合、起動時にサービスを開始したいので、起動時にデーモンによってサービスを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

4 に答える 4

4

スクリプトに2つのコメントを入力します。

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

ルートとして、実行します:

chkconfig --add my_service
于 2012-08-01T11:57:57.657 に答える
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の例:

redhatでシステムの起動時にデーモンを開始するには、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に、実行レベル3で優先度99でデーモンを起動し、サーバーのシャットダウン時に優先度1としてデーモンを強制終了するように指示します。

起動スクリプトをインストールするには、次を使用します。chkconfig --add ./scriptaboveこれで、サーバーの起動時に起動します。

すぐに開始するには使用:サービス開始

詳細情報が必要な場合は、リンクにアクセスしてください

これがいくらか役立つことを願っています!

于 2012-08-01T12:08:23.587 に答える
0

さまざまなLinuxディストリビューションには、さまざまなサービス管理機能が含まれています。LaunchedOpenRC(Gentooに存在)、SystemD(Archなど)を確認する必要があります。

お役に立てれば :)

于 2012-08-01T11:55:31.537 に答える
0

chkconfig --add your_service_name

于 2012-08-01T11:55:36.857 に答える