将spring引导jar作为服务运行时出现意外标记附近的语法错误

将spring引导jar作为服务运行时出现意外标记附近的语法错误,spring,spring-boot,init.d,Spring,Spring Boot,Init.d,我想使用init.d(服务器是Redhat5.9)将基于Spring引导的应用程序作为服务运行 运行服务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" & 我运行了s

我想使用init.d(服务器是Redhat5.9)将基于Spring引导的应用程序作为服务运行

运行
服务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/myappstatus
来查看发生了什么,但这对我没有多大帮助。这是输出的最后一部分:

+ 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" &'
我的jar旁边也有一个
.conf
文件:

[root@appdev02 myapp]# cat myapp-server-0.0.1-SNAPSHOT.conf
MODE=service
LOG_FOLDER=/app/myapp/
JAVA_HOME=/usr/java/default
我使用的是Spring Boot 1.3.1

更新: 我降级到Spring Boot 1.3.0,一切开始正常:

[root@appdev02 ~]# service myapp start
which: no start-stop-daemon in (/sbin:/usr/sbin:/bin:/usr/bin)
Started [19564]

我在OSX上遇到过这个问题,这是因为较旧版本的bash不喜欢&>“$log\u file”重定向语法。看见要恢复到原始bash语法更改,请执行以下操作:

$command &>> "$log_file" &
致:

我注意到脚本中的其他地方使用了原始语法,我建议Spring Boot人员在其根脚本中进行更改

在此之前,我建议复制脚本,进行上述编辑,保存新脚本并将其用作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>

org.springframework.boot
springbootmaven插件

你为什么不使用弹簧靴集成?这就是我正在使用的。我已经创建了一个从
/etc/init.d/myapp
/apps/myapp/myapp-server-0.0.1-SNAPSHOT.jar
的符号链接。jar
看起来是为了支持旧的bash而做的更改:我在Mac上使用
iTerm2
,也遇到了这个问题,当我将
1.3.1
切换到
1.4.0
时,问题就解决了。
<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>