go項目編譯和後臺運行(日誌)

1、go項目採用gox進行編譯 先安裝gox包 go get github.com/mitchellh/gox 安裝完成後go -h查看是否安裝成功,下圖表示安裝成功 node

圖片.png

在你使用 Gox 以前,你必須先有一套交叉編譯工具鏈。Gox 能夠自動幫你完成這個。你須要作的只是運行(每次更新 Go 都要這樣作這步): gox -build-toolchain 下面便可進行交叉編譯,若是你想編譯全部平臺,只需下面命令便可linux

$ gox

Number of parallel builds: 4

--> darwin/386: github.com/mitchellh/gox
--> darwin/amd64: github.com/mitchellh/gox
--> linux/386: github.com/mitchellh/gox
--> linux/amd64: github.com/mitchellh/gox
--> linux/arm: github.com/mitchellh/gox
--> freebsd/386: github.com/mitchellh/gox
--> freebsd/amd64: github.com/mitchellh/gox
--> openbsd/386: github.com/mitchellh/gox
--> openbsd/amd64: github.com/mitchellh/gox
--> windows/386: github.com/mitchellh/gox
--> windows/amd64: github.com/mitchellh/gox
--> freebsd/arm: github.com/mitchellh/gox
--> netbsd/386: github.com/mitchellh/gox
--> netbsd/amd64: github.com/mitchellh/gox
--> netbsd/arm: github.com/mitchellh/gox
--> plan9/386: github.com/mitchellh/gox
複製代碼

由於要在Linux上面運行,因此下面命令進行交叉編譯 gox -osarch="linux/amd64"git

2、後臺運行,採用nohup(下面linux_amd64文件爲上面編譯好的文件)github

nohup ./linux_amd64  > nohup.log 2>&1 &
複製代碼

執行上面命令,項目已經在後臺進行運行,同時在相同目錄生成nohup.log的日誌文件,日誌目錄能夠指定,...> /var/log/nohup.log >...便可,上面最後&符是後臺運行的意思,必須加上。vim

到這裏,go項目就完整的部署運行了,可是nohup.log日誌文件是一個,長時間的話文件內容會很大,很差管理和查看,下面介紹怎麼分割日誌文件。windows

3、用系統自帶Logrotate,按日期分割日誌文件 Logrotate能夠自定義分割日誌的方式,進入下面目錄,建立nohup.logbash

cd /etc/logrotate.d
vim test.log
複製代碼

進入文件進行配置添加便可 看一下主配置文件/etc/logrotate.conf的參數解釋:工具

/var/log/nohup.log  #定義/var/log/nohup.log這個日誌文件;
/home/nohup/nohup.log
{
        missingok
        daily
        create 0664 root utmp
        notifempty
        compress
        delaycompress
        copytruncate
        rotate 2
}
複製代碼

logrotate經常使用參數介紹post

daily                     #指定轉儲週期爲天天
weekly                    #指定轉儲週期爲每週;
monthly                   #指定轉儲週期爲每個月;
rotate count              #指定日誌文件刪除以前轉儲的次數,0指沒有備份,5指保留5個備份;
compress                  #經過gzip壓縮轉儲之後的日誌;
nocompress                #不須要壓縮時,用這個參數;
delaycompress             #延遲壓縮,和compress一塊兒使用時,轉儲的日誌文件到下一次轉儲時才壓縮;
nodelaycompress           #覆蓋delaycompress選項,轉儲同時壓縮;
copytruncate              #用於還在打開中的日誌文件,把當前日誌備份並截斷;
nocopytruncate            #備份日誌文件可是不截斷;
create mode owner group   #轉儲文件,使用指定的文件模式建立新的日誌文件;
nocreate                  #不創建新的日誌文件;
errors address            #專儲時的錯誤信息發送到指定的Email地址;
ifempty                   #即便是空文件也轉儲,這個是logrotate的缺省選項;
notifempty                #若是是空文件的話,不轉儲;
mail address              #把轉儲的日誌文件發送到指定的E-mail地;
nomail                    #轉儲時不發送日誌文件;
olddir directory          #轉儲後的日誌文件放入指定的目錄,必須和當前日誌文件在同一個文件系統;
noolddir                  #轉儲後的日誌文件和當前日誌文件放在同一個目錄下;
prerotate/endscript       #在轉儲之前須要執行的命令能夠放入這個對,這兩個關鍵字必須單獨成行;
postrotate/endscript      #在轉儲之後須要執行的命令能夠放入這個對,這兩個關鍵字必須單獨成行;
tabootext [+] list        #讓logrotate不轉儲指定擴展名的文件,缺省的擴展名是:.rpm-orig, .rpmsave,v,和~ ;
size size                 #當日志文件到達指定的大小時才轉儲,Size能夠指定bytes(缺省)以及KB(sizek)或者MB(sizem);
postrotate                #日誌輪換事後指定指定的腳本,endscript參數表示結束腳本;
sharedscripts             #共享腳本,下面的postrotate中的腳本只執行一次便可;

以上參數均可以已定義在全局配置,或者指定爲某個日誌文件對的配置,但注意使用時參數之間不要衝突。
複製代碼

更詳細的能夠看這篇文章測試

配置完畢,能夠手動如下命令測試一下

/usr/sbin/logrotate -f /etc/logrotate.conf
複製代碼

若是看到相同目錄下

圖片.png
即成功
相關文章
相關標籤/搜索