[英]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
}
鏈接到我正在使用的完整腳本
RUN AS值設置為root
使用sudo
運行命令時,您實際上是以超級用戶或root
身份運行它。
root
用戶沒有找到您的命令的原因可能是root
的PATH
環境變量不包含maven
所在的目錄(在注釋中非常明顯)。 因此找不到命令錯誤的原因。
將PATH
添加到您的腳本中,它包含/opt/integration/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/integration/maven/apache-maven-3.3.9/bin
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.