You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Linux 2 AMI无法通过Upstart启动程序求助

解决终端断开后Go程序持续运行的问题

看起来你遇到的核心问题是:当前系统默认不再使用Upstart(start/initctl命令找不到就是明证),而且你的配置文件也不完整。下面分两种方案帮你解决:

方案一:继续使用Upstart(不推荐,仅适合老版本系统)

现在大多数主流Linux发行版(比如Ubuntu 16.04+)已经弃用Upstart,改用systemd了。如果你坚持要用Upstart,得先安装它:

  • 安装Upstart:
    sudo apt update && sudo apt install upstart
    
  • 补全你的Upstart配置文件(保存到/etc/init/myconf_file.conf,注意必须带.conf后缀):
    description "start and stop the go program 'my-project'"
    start on filesystem or runlevel [2345]
    stop on runlevel [!2345]
    env USER='ubuntu'
    env APP_DIR='/home/ubuntu/go/src/github.com/your-username/your-project'
    # 注意:Linux下Go编译的程序没有.exe后缀,这里要改成你的实际程序名
    env APP_BIN='my-project'
    
    # 切换到指定用户和目录
    setuid $USER
    chdir $APP_DIR
    # 启动程序并记录日志
    exec ./$APP_BIN >> /var/log/my-project.log 2>&1
    
  • 启动服务:
    sudo start myconf_file
    

方案二:使用systemd(推荐,适配现代系统)

这是当前Linux系统的标准服务管理方式,稳定性和兼容性更好:

  1. 创建systemd服务文件:sudo nano /etc/systemd/system/my-project.service
  2. 写入以下配置(替换成你的实际路径):
    [Unit]
    Description=Start and stop the Go program 'my-project'
    After=network.target  # 确保网络就绪后再启动
    
    [Service]
    User=ubuntu  # 运行程序的用户
    WorkingDirectory=/home/ubuntu/go/src/github.com/your-username/your-project  # 程序所在目录
    # 程序的绝对路径,避免环境变量问题
    ExecStart=/home/ubuntu/go/src/github.com/your-username/your-project/my-project
    Restart=always  # 程序崩溃或意外退出时自动重启
    RestartSec=5  # 重启间隔5秒
    # 日志输出配置
    StandardOutput=append:/var/log/my-project.log
    StandardError=append:/var/log/my-project.log
    
    [Install]
    WantedBy=multi-user.target  # 设置开机自启的目标级别
    
  3. 完成后执行以下命令:
    • 重新加载systemd配置:
      sudo systemctl daemon-reload
      
    • 启动服务:
      sudo systemctl start my-project
      
    • 设置开机自启:
      sudo systemctl enable my-project
      
    • 查看服务状态:
      sudo systemctl status my-project
      
    • 实时查看日志:
      sudo tail -f /var/log/my-project.log
      

额外注意事项

  • 确保你的Go程序有执行权限:
    chmod +x /home/ubuntu/go/src/github.com/your-username/your-project/my-project
    
  • 提前创建日志文件并设置权限,避免写入失败:
    sudo touch /var/log/my-project.log && sudo chown ubuntu:ubuntu /var/log/my-project.log
    
  • Linux下Go编译的程序默认没有.exe后缀,记得把配置里的.exe去掉,否则会找不到程序。

内容的提问来源于stack exchange,提问作者HowToGo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:50:02