在 CentOS 上跑 Go 程序,日志报错是很常见的场景。先别急着改代码,关键是把“什么错”看清楚。下面我按「通用排查流程 → 常见错误类型 → 具体解决办法」给你一套实用指南。
常见位置:
systemd 服务:journalctl -u your-service -f
./your-app 2>&1 | tee log.txt
permission denied典型场景
open /var/log/app.log: permission denied
bind: permission denied
解决
# 查看文件权限
ls -l /var/log/app.log
# 修改权限
sudo chown -R youruser:youruser /var/log
sudo chmod 755 /var/log
# 绑定 80/443 端口需要 root
sudo setcap cap_net_bind_service=+ep your-app
address already in uselisten tcp :8080: bind: address already in use
解决
# 查端口占用
sudo netstat -tunlp | grep 8080
# 或
sudo lsof -i:8080
# 杀进程
kill -9 PID
GLIBC_2.28 not found
原因
解决
go build
cannot find packagecannot find package "github.com/xxx"
解决
go env -w GO111MODULE=on
go mod tidy
go build
确保:
go version
go env GOPATH
panic: runtime error: invalid memory address
解决
你可以直接把 报错原文 粘贴过来,比如:
2026/01/15 10:00:00 main.go:42: open config.yaml: no such file or directory
或者:
panic: runtime error: index out of range [3] with length 2
你可以告诉我:
cat /etc/redhat-release)go version)我可以一步一步帮你定位并给修改方案。