dongying3830 2019-04-20 09:29
浏览 838
已采纳

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

I have a Go app, and I'm trying to run it as a systemctl service (Ubuntu 18.04).

I'm using godotenv:

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

I have my .env file in the same directory where my executable is.

I've created a service file:

[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

After executing sudo systemctl start my-go-app.service, then sudo systemctl status my-go-app.service, I got these in my logs:

Starting my-go-app...
panic: open .env: no such file or directory

What's wrong?

While executing main directly, there are no such problems.

  • 写回答

1条回答 默认 最新

  • duandao6414 2019-04-20 09:36
    关注

    I have my .env file in the same directory where my executable is.

    Then you need to configure your working directory to match:

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

    Remember to run systemctl daemon-reload after changing any unit file.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊