【问题标题】:systemd error "failed to start service: unit service is not loaded properly: exec format error"systemd 错误“无法启动服务:未正确加载单元服务:执行格式错误”
【发布时间】:2019-01-22 07:02:19
【问题描述】:

我可以从 shell 执行确切的 ExecStart 命令并且它可以工作,但是由于某些原因在这个服务文件中这不起作用 - 有什么想法吗?

错误:

Failed to start previewapi.service: Unit previewapi.service is not loaded properly: Exec format error.
See system logs and 'systemctl status previewapi.service' for details.

systemd .service 文件:

[Unit]
Description = preview-api
After       = network.target

[Service]
WorkingDirectory=/srv/previewapi
ExecStart   = /usr/bin/java -jar /srv/previewapi/gn-preview-api-0.1.0-SNAPSHOT-standalone.jar

ExecStop    = kill -INT $MAINPID
ExecReload  = kill -TERM $MAINPID

# In case if it gets stopped, restart it immediately
Restart     = always

Type        = simple


[Install]
# multi-user.target corresponds to run level 3
# roughtly meaning wanted by system start
WantedBy    = multi-user.target

Ubuntu 18.04。

sudo journalctl -u previewapi 说:

Aug 15 10:00:28 ubuntu-bionic systemd[1]: /etc/systemd/system/previewapi.service:18: Executable path is not absolute:

【问题讨论】:

  • 您可能需要将参数放在引号中:/usr/bin/java "-jar /srv/previewapi/gn-preview-api-0.1.0-SNAPSHOT-standalone.jar"
  • @assylias 试过了——同样的错误。但是谢谢你的建议!

标签: ubuntu systemd


【解决方案1】:

问题不在于ExecStart,而在于ExecStopExecReload 部分——它们也必须是绝对的。

最终版本:

[Unit]
Description = preview-api
After       = network.target

[Service]
WorkingDirectory=/srv/previewapi
ExecStart=/usr/bin/java -jar /srv/previewapi/gn-preview-api-0.1.0-SNAPSHOT-standalone.jar
ExecStop=/bin/kill -INT $MAINPID
ExecReload=/bin/kill -TERM $MAINPID

# In case if it gets stopped, restart it immediately
Restart     = always

Type        = simple


[Install]
# multi-user.target corresponds to run level 3
# roughtly meaning wanted by system start
WantedBy    = multi-user.target

【讨论】:

猜你喜欢
  • 2011-05-23
  • 2015-11-17
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多