我使用的是Debian 8,需要在服务中设置JAVA_HOME。我将其放置为脚本,因此它需要首先查询系统,因为它并不总是相同的。从命令行中,ExecStart行工作正常,但是当我将其放入此服务时却无法正常工作。我收到:
Aug 12 17:03:16 debian jsvc[6761]: Invalid option -f
Aug 12 17:03:16 debian jsvc[6761]: Cannot parse command line arguments
Aug 12 17:03:16 debian systemd[1]: App1.service: control process exited, code=exited status=1
Aug 12 17:03:16 debian systemd[1]: Failed to start App1.
-- Subject: Unit App1.service has failed
我的服务:
[Unit]
Description=App1
After=syslog.target
[Service]
ExecStart=/usr/bin/jsvc -user root -home ${readlink -f /usr/bin/java | sed "s:bin/java::"} -cp /usr/share/java/commons-daemon.jar:/usr/local/app1.jar -pidfile /var/run/app1 -pidfile
Type=forking
您的exec行将在空格处分割,并且每个单词均作为arg传递给命令。对您而言,最简单的解决方案是将整个命令用单引号引起来并/bin/bash -c
在其前面添加:
ExecStart=/bin/bash -c 'exec /usr/bin/jsvc -user ... -pidfile'
-cv
最初使用,以便您可以在日志中查看通过了哪一行。我还假定您$()
不希望${}
,该systemd将不会扩展。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句