web-dev-qa-db-ja.com

このdebian init.dスクリプトをCentOS 5で動作するように変更するにはどうすればよいですか?

Lsyncdデーモンを実行しようとしています。 esyncからlsyncd RPMをインストールしましたが、init.dスクリプトが付属していないようです。 lsyncdリポジトリには、Debianで動作する this script があります。ただし、これをCentOSで実行しようとすると、次のメッセージが表示されます。

/etc/init.d/lsyncd: line 46: log_daemon_msg: command not found

CentOSで動作するようにこれをどのように適応できますか?

5
Jason Baker

スクリプトの複雑さによっては、ゼロから書く方が簡単な場合があります。実行している問題は、スクリプトの次の行です。

. /lib/lsb/init-functions

これは、debianの起動スクリプトのすべての関数をロードします。その中には、問題が発生している場所である 'log_daemon_msg'関数があります。

init-functionsファイルを見てlog_daemon_msgの機能を理解し、CentOSで複製するか、Debianスクリプトをステップ実行して実際に何が実行されているかを確認できます(おそらく5行未満のコマンド)

4
cpbills

/usr/share/doc/initscripts-*/sysvinitfilesには、既存のスクリプトを変更したり、新しいスクリプトを作成したりするためのモデルとして使用できるテンプレートが含まれています。

同じ問題がありました。これは、他の推奨事項、init.dチュートリアル、およびlsyncd googlecodeサイト link text にある既存のdebianスクリプトに従って私が思いついたものです。これが他の人に役立つことを願って、コピーして貼り付けてください!

#!/bin/bash
#
# lsyncd        This Shell script takes care of starting and stopping
#               lsyncd (the Live Syncing (Mirror) Daemon)
#
# Author: Randy Reddekopp [email protected]
#
# chkconfig: 2345 13 87
# description: Lsyncd uses rsync to synchronize local directories with a remote \
#    machine running rsyncd. It watches multiple directories trees \
#    through inotify. The first step after adding the watches is to \
#    rsync all directories with the remote Host, and then sync single \
#    file by collecting the inotify events. So lsyncd is a light-weight \
#    live mirror solution.
# pidfile: /var/run/lsyncd.pid
# processname: lsyncd

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

PIDFILE="/var/run/lsyncd.pid"
LSYNCD_DIR="/usr/local/bin/"

start() {
        echo -n "Starting Live Syncing Daemon: "
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`
                echo lsyncd already running: $PID
                exit 1;
        else
                cd $LSYNCD_DIR
                daemon ./lsyncd $OPTIONS
                RETVAL=$?
                echo
                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/lsyncd
                return $RETVAL
        fi

}

stop() {
        echo -n "Shutting down Live Syncing Daemon: "
        echo
        killproc lsyncd
        echo
        rm -f /var/lock/subsys/lsyncd
        return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status lsyncd
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?

そのコードを/etc/init.d/lsyncdに貼り付けます。

ファイルの権限を変更します。

chmod 755 /etc/init.d/lsyncd

/etc/lsyncd.conf.xmlファイルで、「<pidfile ... />」ノードのコメントを外して、そのファイル名属性を「/var/run/lsyncd.pid」に設定する必要があります。

次に、サービスを開始するように設定する必要があります!

/ sbin/service lsyncd start

乾杯、ランディ

0
user50662