Я пытаюсь запустить демон lsyncd. Я установил lsyncd RPM от epel, но, похоже, он не поставляется со сценарием init.d. В репозитории lsyncd есть этот сценарий который работает с Debian. Однако, когда я пытаюсь запустить это под 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 и существующему сценарию debian, найденному на сайте lsyncd googlecode. текст ссылки. Надеюсь, это поможет другим, просто скопируйте и вставьте!
#!/bin/bash
#
# lsyncd This shell script takes care of starting and stopping
# lsyncd (the Live Syncing (Mirror) Daemon)
#
# Author: Randy Reddekopp not-public@usask.ca
#
# 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
Привет, Рэнди