我正在尝试使用ubuntu上的GIN框架创建一个Golang服务器。它在使用Go Build构建后在终端执行时运行良好,在本地也同样运行良好。
系统
Description=goapp
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/.../goapp/main
[Install]
WantedBy=multi-user.target
我收到了这个错误
goapp.service - rediate
Loaded: loaded (/lib/systemd/system/goapp.service; disabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2022-09-29 08:14:10 UTC; 66ms ago
Process: 21628
ExecStart=/home/.../go/goapp/main (code=exited, status=2)
Main PID: 21628 (code=exited, status=2)
CPU: 9ms
2条答案
按热度按时间acruukt91#
围棋是一种汇编语言。您需要使用
go build
命令将您的代码构建为一个可执行的二进制文件,然后通过单元文件中的ExecStart
属性将二进制文件的路径指定给system d。请参阅Go Documentation,特别是Compile and install the application部分,以了解有关如何编译应用程序的更多信息。
在您的示例中,您有
ExecStart=/home/.../goapp/main.go
,它告诉system d运行源代码文件。该文件不能被操作系统执行和理解,因此它无法执行,因此SYSTEM D单元也因此而失败。rhfm7lfc2#
将工作目录添加到系统d以修复该错误。系统工作目录定义了相对于服务根目录的目录。