首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >start-stop-daemon可以在命令行中运行,但不能在/etc/init.d脚本中运行

start-stop-daemon可以在命令行中运行,但不能在/etc/init.d脚本中运行
EN

Stack Overflow用户
提问于 2011-03-08 18:13:49
回答 2查看 5.4K关注 0票数 2

我正在尝试获得一个在/etc/init.d/ar_sendmail中工作的起始脚本(用于一个名为ar_sendmail的ruby gem ):

代码语言:javascript
复制
#! /bin/sh

echo "in /etc/init.d/ar_sendmail"
DIR=/home/max/work/e_learning_resource/trunk
PATH=/var/lib/gems/1.8/bin
DAEMON=/var/lib/gems/1.8/bin/ar_sendmail
DAEMON_OPTS="-e production -d --batch-size 100 --delay 150"
NAME=ar_sendmail
DESC=ar_sendmail
PID_FILE=/home/max/work/e_learning_resource/trunk/shared/log/ar_sendmail.pid


test -x $DAEMON || exit 0
set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon -d $DIR --start --quiet --pidfile $PID_FILE \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        kill -TERM `cat $PID_FILE`        
    rm $PID_FILE
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        kill -TERM `cat $PID_FILE`        
    rm $PID_FILE
        sleep 1
        start-stop-daemon -d $DIR --start --quiet --pidfile \
                $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload}" >&2
            exit 1   
            ;;
    esac

    exit 0

它在启动-停止-守护程序行上爆炸,显示“启动-停止-守护程序:找不到”。但是,当我手动将值插入到该行中,并在命令行上运行它时,它可以工作。

我的第一个想法是它是shebang线,但#! /bin/sh应该是对的,不是吗?这绝对是正确的文件夹,也是我在其他/etc/init.d脚本中使用的文件夹。

我的第二个想法是它与sudo相关:我一直在非sudo模式下测试start-stop-daemon,并在sudo模式下运行/etc/init.d/ar_sendmail。但是,我也可以用sudo运行start-stop-daemon。

有点难住了,有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2011-03-08 18:37:50

正如@Dysaster所指出的,你正在用下面这行代码覆盖你的PATH

路径=/var/lib/gems/1.8/bin

因为您给出了守护进程的完整路径名,所以我认为您甚至不需要在路径中添加/var/lib/gems/1.8/bin,除非ar_sendmail需要在不知道其路径的情况下执行该目录中的程序。(这肯定是不幸的,但很容易用PATH=/var/lib/gems/1.8/bin:$PATH修复。)

票数 2
EN

Stack Overflow用户

发布于 2011-03-08 18:23:47

在脚本的开头添加一个source /etc/profile,这样就可以设置路径了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5231036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档