Lsyncdデーモンを実行しようとしています。 esyncからlsyncd RPMをインストールしましたが、init.dスクリプトが付属していないようです。 lsyncdリポジトリには、Debianで動作する this script があります。ただし、これをCentOSで実行しようとすると、次のメッセージが表示されます。
/etc/init.d/lsyncd: line 46: log_daemon_msg: command not found
CentOSで動作するようにこれをどのように適応できますか?
スクリプトの複雑さによっては、ゼロから書く方が簡単な場合があります。実行している問題は、スクリプトの次の行です。
. /lib/lsb/init-functions
これは、debianの起動スクリプトのすべての関数をロードします。その中には、問題が発生している場所である 'log_daemon_msg'関数があります。
init-functionsファイルを見てlog_daemon_msgの機能を理解し、CentOSで複製するか、Debianスクリプトをステップ実行して実際に何が実行されているかを確認できます(おそらく5行未満のコマンド)
/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
乾杯、ランディ