CentOS 中用 nohup 后台运行 Go 程序:从编译到日志查看

雨后青山
雨后青山
发布时间:2026-08-24| 121人浏览过
原创

前言

在 CentOS 服务器上跑 Go 程序时,很多人真正关心的不是“能不能启动”,而是退出终端、断开 SSH 之后进程会不会跟着停掉。本文按最常见的单文件示例,把编译、后台启动和日志查看这三步拆开说明,同时补上 `nohup` 的工作方式和适用边界,方便你判断这种方式是否适合当前程序。

在 CentOS 服务器上跑 Go 程序时,很多人真正关心的不是“能不能启动”,而是退出终端、断开 SSH 之后进程会不会跟着停掉。本文按最常见的单文件示例,把编译、后台启动和日志查看这三步拆开说明,同时补上 `nohup` 的工作方式和适用边界,方便你判断这种方式是否适合当前程序。

为什么要用 nohup 在后台运行 Go 程序

在实际开发和运维场景里,Go 程序经常需要长时间驻留运行,比如定时任务、采集服务或简单的守护进程。如果直接在终端里前台执行,当前会话一旦关闭,程序通常也会退出。

nohup 的作用,就是让进程在终端断开后继续运行。配合命令末尾的 &,可以把程序放入后台执行,适合无交互、需要持续运行的服务型程序。

开始前需要准备什么

先确认 Go 环境已经可用

执行前先确保 CentOS 上已经安装好 Go。如果机器上还没有环境,可以到 Go 官网下载安装:

https://golang.org/dl/

确认源码文件和工作目录

准备好你的 Go 程序,例如保存为 main.go。文件名本身可以调整,但后续编译和执行时要和实际文件对应。

然后打开终端,进入程序所在目录。后面的 go build 和可执行文件启动,都默认基于当前目录进行。

先把 Go 程序编译成可执行文件

对于文中的单文件示例,直接执行下面的编译命令即可:

go build main.go

编译成功后,当前目录下会生成一个可执行文件,例如 main。文中也特别说明,这里针对的是单文件示例;如果你的程序由多个文件组成,实际编译命令可能会有所不同。

顺带一提,Windows 下生成的文件名通常会是 main.exe,但本文场景是 CentOS,因此后续启动命令以 ./main 为准。

如何用 nohup 启动并保持程序不断开

编译完成后,就可以用 nohup 启动程序:

Go 程序在 CentOS 中从源码编译到后台运行的命令流程图
Go 程序后台运行流程用单文件示例展示从 `main.go` 到 `nohup ./main &` 的实际执行链路。
nohup ./main &

这条命令里有两个关键点:

命令末尾的 & 是什么作用

& 表示把进程放到后台运行。也就是说,敲回车后终端会立即返回,你可以继续执行其他命令,或者直接退出当前会话。

nohup.out 会保存什么内容

nohup 会把程序输出自动重定向到当前目录下的 nohup.out 文件。这样即使终端已经关闭,程序输出仍然会被写入文件,便于后续排查运行状态。

启动成功后,即使关闭终端或断开 SSH 连接,程序也会继续在后台运行。

程序启动后,怎么查看运行日志

如果你想持续查看后台程序的输出,可以直接跟踪 nohup.out:

nohup.out 日志输出与 tail 查看方式示意图
nohup.out 日志查看关系图把后台启动后的输出去向和两种常见查看方式放在一张图里,便于区分实时跟踪与临时查看。
tail -f nohup.out

其中 -f 表示持续跟随文件更新,程序有新输出时,终端会实时滚动显示。

如果只是临时看一下最后几行内容,不需要持续监听,也可以使用:

tail nohup.out

这种方式适合什么程序,有哪些限制

这套方法在 CentOS 上用于后台跑 Go 程序很常见,流程简单,也比较稳定。对于一次编译、长期驻留的服务型任务,nohup 基本够用。

但要注意一个前提:程序最好是无交互的。如果程序启动后需要等待键盘输入,或者依赖当前终端进行交互,nohup 场景下这类输入通常不会按预期工作。因此,它更适合守护进程、服务程序和其他不需要人工实时输入的任务。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。