我遇到了创建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
答案 0 :(得分:0)
使用sudo
运行命令时,您实际上是以超级用户或root
运行它。
root
用户未找到您的命令的原因可能是PATH
的{{1}}环境变量不包含root
所在的目录(相当如评论中明显的那样)。因此找不到命令错误的原因。
将maven
添加到您的脚本中,并且其中包含PATH
。由于/opt/integration/maven/apache-maven-3.3.9/bin
脚本不会与系统的其余部分共享init
环境变量(因为它在PATH
$PATH
的实际更新之前运行得多。你需要直接在你的脚本上设置它并确保maven在那里,例如,在开头的.bash_profile
脚本中添加以下行。
init