簡體   English   中英

在init.d服務中運行時找不到mvn命令

[英]mvn command not found when ran in init.d service

我正面臨創建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

使用sudo運行命令時,您實際上是以超級用戶或root身份運行它。

root用戶沒有找到您的命令的原因可能是rootPATH環境變量不包含maven所在的目錄(在注釋中非常明顯)。 因此找不到命令錯誤的原因。

PATH添加到您的腳本中,它包含/opt/inte‌​gration/maven/apache‌​-maven-3.3.9/bin 由於init腳本不會與系統的其余部分共享PATH環境變量(因為它在.bash_profile實際更新$PATH之前運行),您需要直接在腳本上設置它並確保maven例如,在那里,將以下行添加到開頭的init腳本中。

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin‌​:/root/bin:/opt/inte‌​gration/maven/apache‌​-maven-3.3.9/bin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM