加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Go应用程序在生产中运行

发布时间:2020-12-13 23:54:45 所属栏目:Linux 来源:网络整理
导读:我有一个具有ssh root访问权限的生产服务器.我已经安装了go并克隆了我的项目,我正在使用putty运行我的应用程序但是在关闭putty之后我的go应用程序停止工作,我需要做什么才能始终运行go application? 这是我的go.service文件 [Unit]Description=my amazing s
我有一个具有ssh root访问权限的生产服务器.我已经安装了go并克隆了我的项目,我正在使用putty运行我的应用程序但是在关闭putty之后我的go应用程序停止工作,我需要做什么才能始终运行go application?

这是我的go.service文件

[Unit]
Description=my amazing service

[Service]
Restart=always
RestartSec=3
ExecStart=go run /root/work/src/main/main.go

[Install]
WantedBy=multi-user.target

解决方法

猜测很多细节,你可能会在命令行启动你的程序并关闭连接.正在发生的事情是在Unix中正常的会话终止:当登录shell退出时,它下面的所有正在运行的进程都被发送一个HUP信号(“hangup”的缩写,可以追溯到当连接断开意味着电话线连接到机器时已挂断了).

如果您想要做的只是偶尔运行一次并且不介意必须手动重新启动它,那么您可以使用nohup命令来阻止登录会话的结束导致程序终止.

nohup go run your-program &

这将在后台运行您的程序,并阻止它接收HUP信号.您现在可以断开SSH会话,程序将继续运行.

如果这个程序是一个永远在线,持续运行的服务 – 并且因为你提到“生产”,我会认为它是 – 使用@ kichik的解决方案. nohup不是运行生产服务器的合理方式.用@ kichik的方法做对.这个答案就是让您理解为什么您当前的方法不起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读