登录
首页 >  Golang >  Go问答

Go 在 Ubuntu 上作为 systemctl 服务运行时找不到文件

来源:stackoverflow

时间:2024-04-17 13:33:33 195浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《Go 在 Ubuntu 上作为 systemctl 服务运行时找不到文件》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我有一个 go 应用程序,我正在尝试将其作为 systemctl 服务运行(ubuntu 18.04)。

我正在使用 godotenv:

func init() {
    var env map[string]string
    env, err := godotenv.read()
    if err != nil {
        panic(err)
    }
}

我的 .env 文件位于可执行文件所在的同一目录中。

我创建了一个 service 文件:

[Unit]
Description=my go app
Requires=local-fs.target
After=rsyslog.service

[Service]
Type=forking
GuessMainPID=no
StandardInput=null
ExecStart=/var/path/to/my/app/main

[Install]
WantedBy=default.target

执行 sudo systemctl start my-go-app.servicesudo systemctl status my-go-app.service 后,我在日志中得到了这些:

正在启动 my-go-应用程序... 恐慌:打开 .env:没有这样的文件或目录

出了什么问题?

直接执行main则没有这样的问题。


解决方案


我的 .env 文件与可执行文件位于同一目录中。

然后您需要配置您的工作目录以匹配:

[Service]
...
WorkingDirectory=/var/path/to/my/app

记住在更改任何单元文件后运行 systemctl daemon-reload

好了,本文到此结束,带大家了解了《Go 在 Ubuntu 上作为 systemctl 服务运行时找不到文件》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>