goreman是一個go語言編寫的多進程管理工具,是對Ruby下廣泛使用的foreman的重寫(foreman原作者也實現了一個golang版:forego,不過沒有goreman好用)。
相比較monit、supervisor而言要簡單的多,而且可以在項目級別管理進程,比較適合開發環境使用。比如快速運行和一項目相關的所有進程,goreman就可以派上用場。coreos的etcd就是使用的goreman來一鍵啓停單機版的etcd集羣。
安裝
首先需要有go語言的環境,然後下載工具編譯:
go get github.com/mattn/goreman
編譯後的文件放在$GOPATH/bin中,最好把$GOPATH/bin目錄添加到$PATH中,以便方便執行命令。
使用
可以運行以下命令來查看幫助信息:
goreman help
基本例子:
在我們的項目目錄下創建一個名爲Procfile文件,內容爲:
# 名稱: 命令
hello1: ./helloworld
hello2: ./helloworld
hello3: ./helloworld
然後運行goreman start,就會啓動三個運行helloworld命令的進程。
按ctrl-c會關閉所有的進程。
傳入參數:
我可以攜帶多個參數來運行,比如Procfile文件爲:
hello1: ./helloworld --name=$NAME --age=$AGE
hello2: ./helloworld
hello3: ./helloworld
運行命令爲
NAME=Song AGE=18 goreman start
運行單個命令
goreman start hello1
進程控制
當我們通過goreman start命令啓動了一組相關的進程後,我們可以在另外的shell中,進入到相同的目錄,執行一些進程控制的命令:
goreman run start hello 啓動指定的命令
goreman run stop hello 停止指定的進程
goreman run restart hello 重啓指定的進程
goreman run restart-all 重啓所有進程
goreman run status 查看進程列表和狀態,其中前面帶*號的標示正在運行中
goreman run list 查看命令名稱列表
其他命令都不太常用,請參考goreman help。