1. 程式人生 > 程式設計 >Go打包二進位制檔案的實現

Go打包二進位制檔案的實現

背景

眾所周知,go語言可打包成目標平臺二進位制檔案是其一大優勢,如此go專案在伺服器不需要配置go環境和依賴就可跑起來。

操作

需求:打包部署到centos7
筆者打包環境:mac os
方法:進入main.go所在目錄,輸入如下命令,當前目錄便會生成main的可執行檔案

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

Go打包二進位制檔案的實現

Windows平臺打包到Linux執行不一樣,需要輸入如下命令

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build
  • CGO_ENABLED 表示不使用cgo
  • GOOS 表示目標平臺系統(Windows,linux,darwin「mac os」等等)
  • GOARCH 表示目標系統架構(arm arm64 386 amd64 等等)

打包完成後,將二進位制檔案放到伺服器系統,賦可執行許可權:

chmod 773 main

直接執行即可:

./main

或後臺執行:

nohup ./main 1>info.log 2>&1 &

linux 後臺執行程式

一般為了程式後臺執行,我們需要使用nohup命令.
此時需要對程式執行時所產生的輸出資訊記錄,因此就需要使用linux的資訊輸出命令

一個例子

比如要讓redis-server程式後臺執行

1.非後臺執行:

$> ./redis-server

2.後臺執行:

$> nohup ./redis-server 1>/dev/null 2>&1 &
  • 其中數字1代表標準輸出,2代表錯誤資訊輸出,還有未使用的標準輸入即數字0.
  • 1>/dev/null 2>&1 &的意思是標準資訊輸出到空裝置即不做任何處理,也不做任何顯示,/dev/null也可以替換為文字檔名(如 out.log),此時標準資訊就會輸出到指定檔案.
  • 2>&1表示錯誤資訊輸出到標準輸出,即輸出同1>後面的位置,當然也可以直接指定新檔名(如 err.log).
  • 最後的& 表示程式後臺執行

上面的命令還可簡寫:

nohup ./redis-server >/dev/null 2>&1 &

即去掉標準輸出數字1

後臺執行一個程式

1.先用 netstat -tln 檢視埠資訊
2.isof -i:埠 可以找到程式程序號PID
3.kill PID 可以關閉程式

如此便是go打包到linux平臺的完整操作,歡迎大家指證。

到此這篇關於Go打包二進位制檔案的實現的文章就介紹到這了,更多相關Go打包二進位制檔案內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!