init.d启动/停止脚本

时间:2011-11-29 06:49:47

标签: linux bash daemon

我必须在启动/停止脚本中调用perl程序。我在path / to / program:/ home / nuthan / server中有我的perl程序。 现在,我的任务是创建一个启动/停止脚本。即,需要在启动时调用命令守护程序-d -v -r perl / home / nuthan / server -l / tmp / k 并在停止时终止pid。我在网上找到了太多的脚本,我在http://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.html找到了这个。但我不明白这一点,因为我是Perl的新手。请帮忙,我在哪里添加命令,或者我错了吗?

#!/bin/bash
# description: Foo server

# Get function from functions library
. /etc/init.d/functions
# Start the service FOO
start() {
    initlog -c "echo -n Starting FOO server: "
    /path/to/FOO &
    ### Create the lock file ###
    touch /var/lock/subsys/FOO
    success $"FOO server startup"
    echo
}
# Restart the service FOO
stop() {
    initlog -c "echo -n Stopping FOO server: "
    killproc FOO
    ### Now, delete the lock file ###
    rm -f /var/lock/subsys/FOO
    echo
}
### main logic ###
case "$1" in
start)
start
    ;;
  stop)
    stop
    ;;
 status)
    status FOO
    ;;
restart|reload|condrestart)
    stop
    start
    ;;
*)
    echo $"Usage: $0 {start|stop|restart|reload|status}"
    exit 1
esac
exit 0

1 个答案:

答案 0 :(得分:2)

这是您需要将daemon命令放在start function中的位置。

start() {
    initlog -c "echo -n Starting FOO server: "
    daemon -d -v -r perl /home/nuthan/server -l /tmp/k
    ### Create the lock file ###
    touch /var/lock/subsys/FOO
    success $"FOO server startup"
    echo
}

通常init.d脚本应该记录pid,而killproc应该知道在哪里找到pid。

然而,有很多方法无法按预期工作,你将学习很多关于修复它的unix,perl和init.d脚本。