即使控制台关闭也保留 运行 golang 项目
Keep running golang project even if console closed
即使关闭控制台 (putty),如何保持 golang 项目 运行ning。我有 REST API 在 golang 中开发并托管在 AWS 上并使用 putty 连接和 运行 项目
以下命令用于安装和运行项目(myapi)
go install myapi
myapi
当我关闭 putty 时它停止工作。
您有多种选择可以让您的进程保持 运行宁。其中最简单的是使用 nohup
命令。
$ nohup myapi &
以上命令应该 运行 您的应用程序并将输出打印到名为 nohup.out 的文件中。该文件将位于您 运行 命令所在的目录中。另一种选择是使用 screen or tmux。
如果您想以更适合生产的方式开始 运行您的项目,您应该考虑像 systemd 这样的服务管理器。
您可以使用 supervisord
运行 您的程序作为非特权用户并使用 setcap 实用程序授予它所需的权限。
例如,要允许绑定到低端口号(如 80)运行 将需要 运行 在可执行文件上设置一次:
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
作为初始化脚本的基础,但按如下方式更改 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
上面还添加了 --make-pidfile
为您创建 PID 文件的选项。
如果您需要以安全的方式切换到不同的用户,还有 --chuid
选项。
关于Ubuntu和RHEL/CentOS/SL 6.X最简单的方法是写一个upstart
作业配置文件。只需将 exec /usr/sbin/yourprogram
放在 /etc/init/yourprogram.conf
配置文件中即可。使用新贵,无需在后台强制执行程序。不要添加传统守护进程所需的 expect fork
或 expect daemon
。对于 upstart,如果进程不 fork 就更好了。
即使关闭控制台 (putty),如何保持 golang 项目 运行ning。我有 REST API 在 golang 中开发并托管在 AWS 上并使用 putty 连接和 运行 项目
以下命令用于安装和运行项目(myapi)
go install myapi
myapi
当我关闭 putty 时它停止工作。
您有多种选择可以让您的进程保持 运行宁。其中最简单的是使用 nohup
命令。
$ nohup myapi &
以上命令应该 运行 您的应用程序并将输出打印到名为 nohup.out 的文件中。该文件将位于您 运行 命令所在的目录中。另一种选择是使用 screen or tmux。
如果您想以更适合生产的方式开始 运行您的项目,您应该考虑像 systemd 这样的服务管理器。
您可以使用 supervisord
运行 您的程序作为非特权用户并使用 setcap 实用程序授予它所需的权限。
例如,要允许绑定到低端口号(如 80)运行 将需要 运行 在可执行文件上设置一次:
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
作为初始化脚本的基础,但按如下方式更改 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
上面还添加了 --make-pidfile
为您创建 PID 文件的选项。
如果您需要以安全的方式切换到不同的用户,还有 --chuid
选项。
关于Ubuntu和RHEL/CentOS/SL 6.X最简单的方法是写一个upstart
作业配置文件。只需将 exec /usr/sbin/yourprogram
放在 /etc/init/yourprogram.conf
配置文件中即可。使用新贵,无需在后台强制执行程序。不要添加传统守护进程所需的 expect fork
或 expect daemon
。对于 upstart,如果进程不 fork 就更好了。