我正在尝试运行 lsyncd 守护进程。我从 epel 安装了 lsyncd RPM,但它似乎没有附带 init.d 脚本。在 lsyncd 存储库中,有这个脚本适用于 Debian。但是,当我尝试在 CentOS 下运行它时,我收到此消息:
/etc/init.d/lsyncd: line 46: log_daemon_msg: command not found
我怎样才能使它适应 CentOS?
答案1
从头开始编写可能会更容易,这取决于脚本的复杂程度。您遇到的问题是脚本中的这一行:
. /lib/lsb/init-functions
它加载了 debian 启动脚本的所有功能。其中有一个函数“log_daemon_msg”,这就是你的问题所在。
您可以查看 init-functions 文件以了解 log_daemon_msg 的作用,并在 CentOS 上复制,或者您可以逐步执行 Debian 脚本并查看实际运行的内容(可能少于 5 行命令)
答案2
/usr/share/doc/initscripts-*/sysvinitfiles
包含一个模板,您可以将其用作修改现有脚本或创建新脚本的模型。
答案3
我也遇到了同样的问题。以下是我根据其他建议、init.d 教程以及 lsyncd googlecode 网站上的现有 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 启动
欢呼吧,兰迪