我如何才能使这个 debian init.d 脚本适应 CentOS 5?

我如何才能使这个 debian init.d 脚本适应 CentOS 5?

我正在尝试运行 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 启动

欢呼吧,兰迪

相关内容