2017-01-27 9 views
1

init.dサービスの作成に問題があります。以下の(rootユーザーとして)完全に罰金を実行私のrun.shファイルであるinit.dサービスで実行したときにmvnコマンドが見つかりません

mvn install -DskipTests 
mvn exec:java 

しかし、ときに私はinit.dディレクトリ(サービスの実行開始)にサービスとして同じファイルを実行します。私はリンク私は

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

を使用していたスクリプトを完了するために私のstartメソッドである

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 
} 

を見つけていない

MVN命令を取得しますあなたが効果的にスーパーユーザーまたはrootとして、それを実行しているsudoを使用してコマンドを実行すると、値AS

RUNはroot

+0

スクリプトの上にあるあなたの彼女のラインは何ですか? '#!/ bin/sh'や他の? – Inian

+0

これは#!/ bin/bashです –

+0

'init.d'から実行中に' maven'を呼び出す直前に 'echo $ PATH'行を追加できますか?その内容を見ますか? '$ PATH'の値をコマンドラインで実行したときに、コマンドライン – Inian

答えて

0

として設定されています。

rootユーザーがコマンドを見つけていないことを理由はrootためPATH環境変数がmavenが置かれているディレクトリ(コメントのように、非常に明白な)が含まれていない可能性が高いです。したがって、コマンドの理由でエラーが見つかりませんでした。

PATHをスクリプトに追加し、/opt/inte‌​gration/maven/apache‌​-maven-3.3.9/binが含まれていること。 initスクリプトは、PATH環境変数をシステムの残りの部分と共有しないため(の$PATHの実際の更新よりもずっと前に実行されているため)、スクリプトに直接設定して、たとえば、最初に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 
+0

しかし、私はsudoでコマンドを実行していません。 **サービス **はデフォルトでsudoで起動しますか? –

+0

@ Ahmad.Masood:しかし、あなたは 'RUN ASの値はルート'に設定されていると言いましたか?どういう意味ですか? – Inian

関連する問題