Skip to content

Linux Beego 部署与进程管理笔记 ​

Linux 部署 Beego 应用 ​

本轮只做理论正文与源码静态复核;下列命令、示例和测试均未执行。已有输出按代码推演或历史记录理解,不作为本轮运行证据。

原工作笔记记录 Beego 应用打包后独立运行的流程。

打包与部署 ​

sh

bee pack -be GOOS=linux
# Windows 目标使用:bee pack -be GOOS=windows

将产出的压缩包解压到部署目录,确认程序具有执行权限。

sh

chmod +x ./user_server
nohup ./user_server &

查找和停止进程 ​

用 netstat -ntlp 查询监听端口,读取输出中的 PID/Program name 并确认程序身份。kill 接受 PID,不能填写端口号。优先发送正常终止信号;原稿直接使用 kill -9 会跳过程序清理。

sh

kill <PID>

Windows 侧原稿只提到通过启动项 BAT 或服务启动,尚未提供具体实现。

历史部署笔记的适用范围 ​

这份资料不包含所用 bee/Beego 版本、应用源码或配置,因此打包片段不作为完整部署工程。user_server 仅是原应用文件名,不能由 pack 命令推断每个工程都产生同名文件。nohup 只改变挂断信号/标准流处理,不提供开机启动、健康检查、日志轮转或失败重启。当前完整 Go HTTP 工程在API课程,本页只保留历史进程操作的解释。

书面练习:端口号能否直接传给 kill?提示:对照 PID 与监听端口两列。

参考答案

不能。核对进程身份后使用 PID;信号能否触发应用清理还取决于程序是否实现该信号的处理。不能用 kill -9 证明优雅关闭。

Shell 按名称查找与终止进程 ​

杀死进程 ​

下方 kill.sh 是按文本模式批量匹配并发送 SIGKILL 的历史反例,可能误中无关进程并跳过清理,不作为当前流程。实际停止以核对进程身份后的正常信号为准;原稿仅供对照,未执行。

kill.sh

#!/bin/sh
#根据进程名杀死进程
if [ $# -lt 1 ]
then
  echo "缺少参数:procedure_name"
  exit 1
fi

PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
  echo "Kill the $1 process [ $i ]"
  kill -9 $i
done

继续阅读