前几天遇到个问题:代码在服务器编译以后想要kill的时候查找很麻烦。
把本地代码部署到服务器(没有使用容器), 我是这样做的:把代码放到服务器后编译每个项目的main.go,执行如下命令:
go build main.go
以上命令运行以后会生成一个main.exe的可执行文件。
并以不挂断的方式在后台运行:
nohup ./main &
由于有好几个项目都被我直接编译后大家都是main.exe。后来导致需要对某个项目kill掉重新编译都无法查找。
有的项目是指定了端口的还好,有的比如定时器之类的是不需要端口的,就会导致kill的时候很麻烦。
网上查找资料,发现go build其实还可以指定文件名输出的。
go build -o 目标文件名 main.go
加上-o 参数以后,就可以避免上述问题的出现。
windows交叉编译:
ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
将编译好的二进制文件user变成可执行文件:
chmod 755 user