在init.d服务

时间:2017-01-27 16:40:20

标签: linux bash maven

我遇到了创建init.d服务的问题。以下是我的run.sh文件,它执行完全正常(以root用户身份)

mvn install -DskipTests
mvn exec:java

但是当我在init.d(服务运行启动)中执行与服务相同的文件时。我得到了

  
    找不到

mvn命令

  

以下是我的开始方法

start() {
    if [ -f /var/run/$PIDNAME ] && kill -0 $(cat /var/run/$PIDNAME); then
    echo 'Service already running' >&2
    return 1
    fi
    echo 'Starting service…' >&2
    CMD="$SCRIPT &> \"$LOGFILE\" & echo \$!"
    su -c "$CMD" $RUNAS > "$PIDFILE"
    echo 'Service started' >&2
}

链接到我正在使用

的完整脚本

https://gist.githubusercontent.com/naholyr/4275302/raw/9df4ef3f4f2c294c9585f11d1c8593b62bdd52d3/service.sh

RUN AS值设置为root

1 个答案:

答案 0 :(得分:0)

使用sudo运行命令时,您实际上是以超级用户或root运行它。

root用户未找到您的命令的原因可能是PATH的{​​{1}}环境变量不包含root所在的目录(相当如评论中明显的那样)。因此找不到命令错误的原因。

maven添加到您的脚本中,并且其中包含PATH。由于/opt/inte‌​gration/maven/apache‌​-maven-3.3.9/bin脚本不会与系统的其余部分共享init环境变量(因为它在PATH $PATH的实际更新之前运行得多。你需要直接在你的脚本上设置它并确保maven在那里,例如,在开头的.bash_profile脚本中添加以下行。

init