如果在终端中执行,服务中的命令运行方式会有所不同

如果在终端中执行,服务中的命令运行方式会有所不同

我有一个可以运行的 war 文件:java -jar /opt/path/to/my.war

相同的命令位于服务文件中,如下所示:

[Unit]
Description=My Service

[Service]
WorkingDirectory=/opt/path/to/
ExecStart=/opt/path/to/jre8/jre/bin/java -jar /opt/path/to/my.war --spring.profiles.active=prod
PIDFile=/opt/path/my.pid

[Install]
WantedBy=multi-user.target

当我运行service myservice start该服务时,它会像单独使用命令一样启动。不同之处在于,使用 时service,加载网页会在浏览器控制台中产生错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:nomod] Module 'myApp' is not available!

浏览器显示空白页。

请注意,/opt仅通过 可用sudo su。仅在 中运行该命令su有效。因此,问题是当服务执行命令时会发生一些不同的事情,但我不知道是什么。

答案1

我认为您正在创建一个单元文件,它应该与 systemctl 一起使用。因此,请尝试一下systemctl start myservice

相关内容