多進程管理工具:goreman

Linux下多進程管理工具對開發和運維都頗有用,常見的功能全面的主流工具主要有monit、supervisor。不過開發中使用則推薦輕量級小工具goremangit

goreman是對Ruby下普遍使用的foreman的重寫,畢竟基於golang的工具簡單易用多了。順便提一句:goreman的做者是mattn,在golang社區挺活躍的日本的一名程序員。foreman原做者也實現了一個golang版:forego,不過沒有goreman好用,舉個例子:coreos的etcd就是使用的goreman來一鍵啓停單機版的etcd集羣。程序員

安裝

go工具安裝都很是簡單:github

go get github.com/mattn/goreman
goreman help

固然,記得先把GOPATH、GOROOT環境變量配置好,並記得把$GOPATH/bin添加到$PATHgolang

使用

因爲是小工具,參考goreman help基本就足夠了。簡單的使用步驟:web

  1. 新建一個Procfile文件,若是更名則須要goreman -f指定。apache

  2. 在包含Procfile的目錄下執行:goreman start後端

  3. 關閉時直接ctrl-c推出,goreman會自動把全部啓動的進程都shut downbash

舉例

Apache kafka的使用爲例,瞭解的朋友應該知道,kafka使用時一般須要啓動兩個進程:一個zookeeper,一個kafka broker,所以能夠編寫一個kafka開發環境的Procfile:服務器

zookeeper: bash ~/tool/kafka_2.11-0.8.2.1/bin/zookeeper-server-start.sh config/zookeeper.properties
broker: bash ~/tool/kafka_2.11-0.8.2.1/bin/kafka-server-start.sh config/server.properties

而後執行goreman start,能夠看到不一樣顏色區分的zookeeper、kafka broker進程的啓動日誌:session

11:04:10 zookeeper | Starting zookeeper on port 5000
11:04:10    broker | Starting broker on port 5001
...

關閉時,直接ctrl-c,則兩個bash進程也會被自動關閉。

高級用法

上述是最簡單的使用場景:直接使用goreman start,不過有個缺點,即goreman綁定到了當前的session,並且不能靈活控制多個進程啓停以及順序。而實際開發過程當中,一般須要常常單獨啓停某個正在開發的模塊相關的進程,好比上面例子中的kafka-broker,而Zookeeper一般不須要頻繁啓停。

可使用更高級的goreman run命令來實現,如:

# 先啓動Zookeeper
goreman run start zookeeper
# 而後啓動kafka
goreman run start broker
# 查看進程狀態
goreman run status
# 中止broker進程
goreman run stop broker
# 重啓broker進程
goreman run restart broker

總結

多進程管理是目前開發尤爲是互聯網web、服務器後端很經常使用的工具,尤爲上雲以後,雲應用廣泛推崇的microservices微服務架構進一步增長了後端進程數。而goreman很適合開發環境使用,可以一鍵式管理多個後臺進程,並及時清理環境。不過真正的生產環境,仍是使用monit/m、supervisor等更成熟穩定、功能全面的多進程管理工具。

相關文章
相關標籤/搜索