2015-12-21 39 views
1

我想使用init.d(服務器是Redhat 5.9)將我的基於Spring引導的應用程序作爲服務運行。運行彈簧引導罐作爲服務時出現意外令牌附近的語法錯誤

當運行service myapp start/etc/init.d/myapp start,我得到以下錯誤:

/etc/init.d/myapp: line 168: syntax error near unexpected token `>' 
/etc/init.d/myapp: line 168: ` $command &>> "$log_file" & 

我跑sh -x /etc/init.d/myapp status,看看發生了什麼,但它並沒有幫助我很多。這是輸出的最後一部分:

+ PID_FOLDER=/var/run/myapp 
+ pid_file=/var/run/myapp/myapp.pid 
+ log_file=/app/myapp//myapp.log 
++ id -u 
+ [[ 0 == \0 ]] 
++ awk '{print $3}' 
++ ls -ld /app/myapp/myapp-server-0.0.1-SNAPSHOT.jar 
+ run_user=myapp 
+ [[ -n /usr/java/default ]] 
+ [[ -x /usr/java/default/bin/java ]] 
+ javaexe=/usr/java/default/bin/java 
+ command='/usr/java/default/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /app/myapp/myapp-server-0.0.1-SNAPSHOT.jar ' 
/etc/init.d/myapp: line 168: syntax error near unexpected token `>' 
/etc/init.d/myapp: line 168: ` $command &>> "$log_file" &' 

我有一個.conf文件旁邊,我的罐子,以及:

[[email protected] myapp]# cat myapp-server-0.0.1-SNAPSHOT.conf 
MODE=service 
LOG_FOLDER=/app/myapp/ 
JAVA_HOME=/usr/java/default 

我使用Spring 1.3.1啓動

更新: 我降級到Spring Boot 1.3.0並開始工作:

[[email protected] ~]# service myapp start 
which: no start-stop-daemon in (/sbin:/usr/sbin:/bin:/usr/bin) 
Started [19564] 
+0

你爲什麼不使用Spring Boots集成了[init腳本](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#deployment-service)? –

+0

這就是我正在使用的。我創建了一個從'/etc/init.d/myapp'到'/ apps/myapp/myapp-server-0.0.1-SNAPSHOT.jar'的符號鏈接。 –

回答

2

我在OSX上遇到了這個問題,這是因爲舊版本的bash不喜歡& >>「$ log_file」重定向語法。見https://www.gnu.org/software/bash/manual/bashref.html。要恢復到原來的bash語法變化:

$command &>> "$log_file" & 

到:

$command >> "$log_file" 2>&1 

我注意到原來的語法在其他地方使用的腳本,我會建議春節引導人們做出改變他們的根腳本。

在那之前,我建議複製腳本,使上面的編輯,保存新的腳本,並使用它作爲embeddedLanchScript - 如果使用MVN做到這一點像這樣:

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <executable>true</executable 
<embeddedLaunchScript>${basedir}/src/main/resources/embeddedLaunchScript.bash</embeddedLaunchScript> 
    </configuration> 
</plugin> 
+2

看起來像已經做出了改變來支持舊的bash:https: //github.com/spring-projects/spring-boot/commit/832ad2fe859bc726566e0eb07fdf8f596891a32a –

+0

我在Mac上使用'iTerm2',也遇到了這個問題,當我把'1.3.1'切換到'1.4.0'時,它解決了。 – zhuguowei

相關問題