即使控制台关闭,也继续运行golang项目

时间:2017-10-26 14:27:10

标签: amazon-web-services go amazon-ec2 putty

即使关闭console(putty),如何让golang项目继续运行。我在golang中开发了REST API,并在AWS上托管并使用putty连接并运行项目

以下命令用于安装和运行项目(myapi)

go install myapi

myapi

当我关闭腻子时,它停止工作。

2 个答案:

答案 0 :(得分:10)

您有许多选项可以让您的流程继续运行。最简单的方法是使用nohup命令。

$ nohup myapi &

上面的命令应该运行你的应用程序并将输出打印到名为nohup.out的文件中。该文件将位于运行该命令的目录中。另一种选择是使用screentmux

如果您想以更加生产的方式开始运行项目,您应该考虑像systemd这样的服务管理器。

答案 1 :(得分:4)

您可以使用supervisord

之类的内容

以非特权用户身份运行您的程序,并使用setcap实用程序为其授予所需权限。

例如,要允许绑定到低端口号(如80),需要在可执行文件上运行setcap一次:

sudo setcap 'cap_net_bind_service=+ep' /opt/yourGoBinary

您可能需要安装setcap:sudo aptitude install libcap2-bin

另外

Debian附带了一个名为start-stop-daemon的工具,它是在init.d脚本中启动守护进程的标准方法。如果程序不自行执行,它还可以将该过程置于后台。看看--background选项。

使用/etc/init.d/skeleton作为init脚本的基础,但更改do_start()函数,如下所示:

start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \
    --background --exec $DAEMON --test > /dev/null \
            || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \
    --background --exec $DAEMON -- $DAEMON_ARGS \
            || return 2

上面还添加了为您创建PID文件的--make-pidfile选项。

如果您需要以安全的方式切换到其他用户,还有--chuid选项。

在Ubuntu和RHEL / CentOS / SL 6.X上,最简单的方法是编写upstart作业配置文件。只需将exec /usr/sbin/yourprogram放入/etc/init/yourprogram.conf配置文件即可。使用暴发户,无需在后台强制执行该程序。不要在传统守护进程中添加所需的expect forkexpect daemon。使用upstart,如果进程不分叉则更好。