supervisor进程管理工具
2019獨角獸企業重金招聘Python工程師標準>>>
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | 先說說supervisor是干什么的吧? supervisor這東西,其實就是用來管理進程的。咱們為什么要用supervisor呢?因為,相對于我們linux傳統的進程管理方式來說, 它有很多的優勢,要不然咱們也不會閑著沒事去用supervisor了。 OK,下面來看看supervisor有哪些好處吧。 簡單 為啥簡單呢?因為咱們通常管理linux進程的時候,一般來說都需要自己編寫一個能夠實現進程start/stop/restart/reload功能的腳本, 然后丟到/etc/init.d/下面。這么做有很多不好的地方,第一我們要編寫這個腳本,這就很耗時耗力了。第二,當這個進程掛掉的時候, linux不會自動重啟它的,想要自動重啟的話,我們還要自己寫一個監控重啟腳本。而,supervisor則可以完美的解決這些問題。好, 怎么解決的呢,其實supervisor管理進程,就是通過fork/exec的方式把這些被管理的進程,當作supervisor的子進程來啟動。這樣的話, 我們只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去就OK了。這樣就省下了我們如同linux管理進程的時候, 自己寫控制腳本的麻煩了。第二,被管理進程作為supervisor的子進程,當子進程掛掉的時候,父進程可以準確獲取子進程掛掉的信息的, 所以當然也就可以對掛掉的子進程進行自動重啟了,當然重啟還是不重啟,也要看你的配置文件里面有木有設置autostart=true了,這是后話。 精確 為啥說精確呢?因為linux對進程狀態的反饋,有時候不太準確。為啥不準確?這個樓主也不知道啊,官方文檔是這么說的, 知道的告訴樓主一下吧,感激不盡。而supervisor監控子進程,得到的子進程狀態無疑是準確的。 進程組 supervisor可以對進程組統一管理,也就是說咱們可以把需要管理的進程寫到一個組里面,然后我們把這個組作為一個對象進行管理, 如啟動,停止,重啟等等操作。而linux系統則是沒有這種功能的,我們想要停止一個進程,只能一個一個的去停止,要么就自己寫個腳本去批量停止。 集中式管理 supervisor管理的進程,進程組信息,全部都寫在一個ini格式的文件里就OK了。而且,我們管理supervisor的時候的可以在本地進行管理, 也可以遠程管理,而且supervisor提供了一個web界面,我們可以在web界面上監控,管理進程。?當然了,本地,遠程和web管理的時候, 需要調用supervisor的xml_rpc接口,這個也是后話。 有效性 當supervisor的子進程掛掉的時候,操作系統會直接給supervisor發信號。而其他的一些類似supervisor的工具,則是通過進程的pid文件,來發送信號的, 然后定期輪詢來重啟失敗的進程。顯然supervisor更加高效。。。至于是哪些類似supervisor工具,這個樓主就不太清楚了,樓主還聽說過god,director, 但是沒用過。有興趣的朋友可以玩玩 可擴展性 supervisor是個開源軟件,牛逼點的,可以直接去改軟件。不過咱們大多數人還是老老實實研究supervisot提供的接口吧,supervisor主要提供了兩個可擴展的功能。 一個是event機制,這個就是樓主這兩天干的活要用到的東西。再一個是xml_rpc,supervisor的web管理端和遠程調用的時候,就要用到它了。 權限 大伙都知道linux的進程,特別是偵聽在1024端口之下的進程,一般用戶大多數情況下,是不能對其進行控制的。想要控制的話,必須要有root權限。 而supervisor提供了一個功能,可以為supervisord或者每個子進程,設置一個非root的user,這個user就可以管理它對應的進程了。 不過這功能,用不用就看大伙自己的環境了 還有一些什么兼容性,穩定性,感覺用處不大,就不扯了。 安裝 安裝方法很簡單。樓主的系統是debian,其它系統就不說了 aptitude?-y?install?python-setuptools easy-install?supervisor或者pip?install?supervisor 生成配置文件 安裝好supervisor之后,默認是沒有生成配置文件的。可以通過以下命令生成配置文件 echo_supervisord_conf?>?/etc/supervisord.conf 我們通常是把配置文件放到/etc/下面,當然也可以放到任意路徑下面。 啟動 以下啟動順序由上到下優先級,依次遞減 supervisord???????????????????????????????????#默認去找$CWD/supervisord.conf,也就是當前目錄 supervisord???????????????????????????????????#默認$CWD/etc/supervisord.conf,也就當前目錄下的etc目錄 supervisord???????????????????????????????????#默認去找/etc/supervisord.conf的配置文件 supervisord?-c?/home/supervisord.conf?????????#到指定路徑下去找配置文件 supervisor組件 supervisord supervisord是supervisor的服務端程序。 干的活:啟動supervisor程序自身,啟動supervisor管理的子進程,響應來自clients的請求,重啟閃退或 異常退出的子進程,把子進程的stderr或stdout記錄到日志文件中,生成和處理Event supervisorctl 這東西還是有點用的,如果說supervisord是supervisor的服務端程序,那么supervisorctl就是client端程序了。 supervisorctl有一個類型shell的命令行界面,我們可以利用它來查看子進程狀態, 啟動/停止/重啟子進程,獲取running子進程的列表等等。。 。最牛逼的一點是,supervisorctl不僅可以連接到本機上的supervisord,還可以連接到遠程的supervisord, 當然在本機上面是通過UNIX?socket連接的,遠程是通過TCP?socket連接的。 supervisorctl和supervisord之間的通信,是通過xml_rpc完成的。????相應的配置在[supervisorctl]塊里面 Web?Server Web?Server主要可以在界面上管理進程,Web?Server其實是通過XML_RPC來實現的, 可以向supervisor請求數據,也可以控制supervisor及子進程。配置在[inet_http_server]塊里面 XML_RPC接口 這個就是遠程調用的,上面的supervisorctl和Web?Server就是它弄的 配置文件詳解 ?? [unix_http_server]???????????? file=/tmp/supervisor.sock???;?socket文件的路徑,supervisorctl用XML_RPC和supervisord通信就是通過它進行 ??????????????????????????????的。如果不設置的話,supervisorctl也就不能用了?? ??????????????????????????????不設置的話,默認為none。?非必須設置???????? ;chmod=0700?????????????????;?這個簡單,就是修改上面的那個socket文件的權限為0700 ??????????????????????????????不設置的話,默認為0700。?非必須設置 ;chown=nobody:nogroup???????;?這個一樣,修改上面的那個socket文件的屬組為user.group ??????????????????????????????不設置的話,默認為啟動supervisord進程的用戶及屬組。非必須設置 ;username=user??????????????;?使用supervisorctl連接的時候,認證的用戶 ???????????????????????????????不設置的話,默認為不需要用戶。?非必須設置 ;password=123???????????????;?和上面的用戶名對應的密碼,可以直接使用明碼,也可以使用SHA加密 ??????????????????????????????如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d ??????????????????????????????默認不設置。。。非必須設置 ? ;[inet_http_server]?????????;?偵聽在TCP上的socket,Web?Server和遠程的supervisorctl都要用到他 ??????????????????????????????不設置的話,默認為不開啟。非必須設置 ;port=127.0.0.1:9001????????;?這個是偵聽的IP和端口,偵聽所有IP用?:9001或*:9001。 ??????????????????????????????這個必須設置,只要上面的[inet_http_server]開啟了,就必須設置它 ;username=user??????????????;?這個和上面的uinx_http_server一個樣。非必須設置 ;password=123???????????????;?這個也一個樣。非必須設置 ? [supervisord]????????????????;這個主要是定義supervisord這個服務端進程的一些參數的 ??????????????????????????????這個必須設置,不設置,supervisor就不用干活了 logfile=/tmp/supervisord.log?;?這個是supervisord這個主進程的日志路徑,注意和子進程的日志不搭嘎。 ???????????????????????????????默認路徑$CWD/supervisord.log,$CWD是當前目錄。。非必須設置 logfile_maxbytes=50MB????????;?這個是上面那個日志文件的最大的大小,當超過50M的時候,會生成一個新的日? ???????????????????????????????志文件。當設置為0時,表示不限制文件大小 ???????????????????????????????默認值是50M,非必須設置。?????????????? logfile_backups=10???????????;?日志文件保持的數量,supervisor在啟動程序時,會自動創建10個buckup文件,用于log?rotate ???????????????????????????????當設置為0時,表示不限制文件的數量。 ???????????????????????????????默認情況下為10。。。非必須設置 loglevel=info????????????????;?日志級別,有critical,?error,?warn,?info,?debug,?trace,?or?blather等 ???????????????????????????????默認為info。。。非必須設置項 pidfile=/tmp/supervisord.pid?;?supervisord的pid文件路徑。 ???????????????????????????????默認為$CWD/supervisord.pid。。。非必須設置 nodaemon=false???????????????;?如果是true,supervisord進程將在前臺運行 ???????????????????????????????默認為false,也就是后臺以守護進程運行。。。非必須設置 minfds=1024??????????????????;?這個是最少系統空閑的文件描述符,低于這個值supervisor將不會啟動。 ???????????????????????????????系統的文件描述符在這里設置cat?/proc/sys/fs/file-max ???????????????????????????????默認情況下為1024。。。非必須設置 minprocs=200?????????????????;?最小可用的進程描述符,低于這個值supervisor也將不會正常啟動。 ??????????????????????????????ulimit??-u這個命令,可以查看linux下面用戶的最大進程數 ??????????????????????????????默認為200。。。非必須設置 ;umask=022???????????????????;?進程創建文件的掩碼 ???????????????????????????????默認為022。。非必須設置項 ;user=chrism?????????????????;?這個參數可以設置一個非root用戶,當我們以root用戶啟動supervisord之后。 ???????????????????????????????我這里面設置的這個用戶,也可以對supervisord進行管理 ???????????????????????????????默認情況是不設置。。。非必須設置項 ;identifier=supervisor???????;?這個參數是supervisord的標識符,主要是給XML_RPC用的。當你有多個 ???????????????????????????????supervisor的時候,而且想調用XML_RPC統一管理,就需要為每個 ???????????????????????????????supervisor設置不同的標識符了 ???????????????????????????????默認是supervisord。。。非必需設置 ;directory=/tmp??????????????;?這個參數是當supervisord作為守護進程運行的時候,設置這個參數的話,啟動 ???????????????????????????????supervisord進程之前,會先切換到這個目錄 ???????????????????????????????默認不設置。。。非必須設置 ;nocleanup=true??????????????;?這個參數當為false的時候,會在supervisord進程啟動的時候,把以前子進程 ???????????????????????????????產生的日志文件(路徑為AUTO的情況下)清除掉。有時候咱們想要看歷史日志,當? ???????????????????????????????然不想日志被清除了。所以可以設置為true ???????????????????????????????默認是false,有調試需求的同學可以設置為true。。。非必須設置 ;childlogdir=/tmp????????????;?當子進程日志路徑為AUTO的時候,子進程日志文件的存放路徑。 ???????????????????????????????默認路徑是這個東西,執行下面的這個命令看看就OK了,處理的東西就默認路徑 ???????????????????????????????python?-c?"import?tempfile;print?tempfile.gettempdir()" ???????????????????????????????非必須設置 ;environment=KEY="value"?????;?這個是用來設置環境變量的,supervisord在linux中啟動默認繼承了linux的 ???????????????????????????????環境變量,在這里可以設置supervisord進程特有的其他環境變量。 ???????????????????????????????supervisord啟動子進程時,子進程會拷貝父進程的內存空間內容。?所以設置的 ???????????????????????????????這些環境變量也會被子進程繼承。 ???????????????????????????????小例子:environment=name="haha",age="hehe" ???????????????????????????????默認為不設置。。。非必須設置 ;strip_ansi=false????????????;?這個選項如果設置為true,會清除子進程日志中的所有ANSI?序列。什么是ANSI ???????????????????????????????序列呢?就是我們的\n,\t這些東西。 ???????????????????????????????默認為false。。。非必須設置 ? ;?the?below?section?must?remain?in?the?config?file?for?RPC ;?(supervisorctl/web?interface)?to?work,?additional?interfaces?may?be ;?added?by?defining?them?in?separate?rpcinterface:?sections [rpcinterface:supervisor]????;這個選項是給XML_RPC用的,當然你如果想使用supervisord或者web?server?這? ??????????????????????????????個選項必須要開啟的 supervisor.rpcinterface_factory?=?supervisor.rpcinterface:make_main_rpcinterface? ? [supervisorctl]??????????????;這個主要是針對supervisorctl的一些配置?? serverurl=unix:///tmp/supervisor.sock?;?這個是supervisorctl本地連接supervisord的時候,本地UNIX?socket ????????????????????????????????????????路徑,注意這個是和前面的[unix_http_server]對應的 ????????????????????????????????????????默認值就是unix:///tmp/supervisor.sock。。非必須設置 ;serverurl=http://127.0.0.1:9001?;?這個是supervisorctl遠程連接supervisord的時候,用到的TCP?socket路徑 ???????????????????????????????????注意這個和前面的[inet_http_server]對應 ???????????????????????????????????默認就是http://127.0.0.1:9001。。。非必須項 ???????????????????????????????? ;username=chris??????????????;?用戶名 ???????????????????????????????默認空。。非必須設置 ;password=123????????????????;?密碼 ??????????????????????????????默認空。。非必須設置 ;prompt=mysupervisor?????????;?輸入用戶名密碼時候的提示符 ???????????????????????????????默認supervisor。。非必須設置 ;history_file=~/.sc_history??;?這個參數和shell中的history類似,我們可以用上下鍵來查找前面執行過的命令 ???????????????????????????????默認是no?file的。。所以我們想要有這種功能,必須指定一個文件。。。非 ???????????????????????????????必須設置 ? ;?The?below?sample?program?section?shows?all?possible?program?subsection?values, ;?create?one?or?more?'real'?program:?sections?to?be?able?to?control?them?under ;?supervisor. ? ;[program:theprogramname]??????;這個就是咱們要管理的子進程了,":"后面的是名字,最好別亂寫和實際進程 ????????????????????????????????有點關聯最好。這樣的program我們可以設置一個或多個,一個program就是 ????????????????????????????????要被管理的一個進程 ;command=/bin/cat??????????????;?這個就是我們的要啟動進程的命令路徑了,可以帶參數 ????????????????????????????????例子:/home/test.py?-a?'hehe' ????????????????????????????????有一點需要注意的是,我們的command只能是那種在終端運行的進程,不能是 ????????????????????????????????守護進程。這個想想也知道了,比如說command=service?httpd?start。 ????????????????????????????????httpd這個進程被linux的service管理了,我們的supervisor再去啟動這個命令 ????????????????????????????????這已經不是嚴格意義的子進程了。 ????????????????????????????????這個是個必須設置的項 ;process_name=%(program_name)s?;?這個是進程名,如果我們下面的numprocs參數為1的話,就不用管這個參數 ?????????????????????????????????了,它默認值%(program_name)s也就是上面的那個program冒號后面的名字, ?????????????????????????????????但是如果numprocs為多個的話,那就不能這么干了。想想也知道,不可能每個 ?????????????????????????????????進程都用同一個進程名吧。 ? ????????????????????????????????? ;numprocs=1????????????????????;?啟動進程的數目。當不為1時,就是進程池的概念,注意process_name的設置 ?????????????????????????????????默認為1????。。非必須設置 ;directory=/tmp????????????????;?進程運行前,會前切換到這個目錄 ?????????????????????????????????默認不設置。。。非必須設置 ;umask=022?????????????????????;?進程掩碼,默認none,非必須 ;priority=999??????????????????;?子進程啟動關閉優先級,優先級低的,最先啟動,關閉的時候最后關閉 ?????????????????????????????????默認值為999?。。非必須設置 ;autostart=true????????????????;?如果是true的話,子進程將在supervisord啟動后被自動啟動 ?????????????????????????????????默認就是true???。。非必須設置 ;autorestart=unexpected????????;?這個是設置子進程掛掉后自動重啟的情況,有三個選項,false,unexpected ?????????????????????????????????和true。如果為false的時候,無論什么情況下,都不會被重新啟動, ?????????????????????????????????如果為unexpected,只有當進程的退出碼不在下面的exitcodes里面定義的退? ?????????????????????????????????出碼的時候,才會被自動重啟。當為true的時候,只要子進程掛掉,將會被無 ?????????????????????????????????條件的重啟 ;startsecs=1???????????????????;?這個選項是子進程啟動多少秒之后,此時狀態如果是running,則我們認為啟 ?????????????????????????????????動成功了 ?????????????????????????????????默認值為1?。。非必須設置 ;startretries=3????????????????;?當進程啟動失敗后,最大嘗試啟動的次數。。當超過3次后,supervisor將把 ?????????????????????????????????此進程的狀態置為FAIL ?????????????????????????????????默認值為3?。。非必須設置 ;exitcodes=0,2?????????????????;?注意和上面的的autorestart=unexpected對應。。exitcodes里面的定義的 ?????????????????????????????????退出碼是expected的。 ;stopsignal=QUIT???????????????;?進程停止信號,可以為TERM,?HUP,?INT,?QUIT,?KILL,?USR1,?or?USR2等信號 ??????????????????????????????????默認為TERM?。。當用設定的信號去干掉進程,退出碼會被認為是expected ??????????????????????????????????非必須設置 ;stopwaitsecs=10???????????????;?這個是當我們向子進程發送stopsignal信號后,到系統返回信息 ?????????????????????????????????給supervisord,所等待的最大時間。?超過這個時間,supervisord會向該 ?????????????????????????????????子進程發送一個強制kill的信號。 ?????????????????????????????????默認為10秒。。非必須設置 ;stopasgroup=false?????????????;?這個東西主要用于,supervisord管理的子進程,這個子進程本身還有 ?????????????????????????????????子進程。那么我們如果僅僅干掉supervisord的子進程的話,子進程的子進程 ?????????????????????????????????有可能會變成孤兒進程。所以咱們可以設置可個選項,把整個該子進程的 ?????????????????????????????????整個進程組都干掉。?設置為true的話,一般killasgroup也會被設置為true。 ?????????????????????????????????需要注意的是,該選項發送的是stop信號 ?????????????????????????????????默認為false。。非必須設置。。 ;killasgroup=false?????????????;?這個和上面的stopasgroup類似,不過發送的是kill信號 ;user=chrism???????????????????;?如果supervisord是root啟動,我們在這里設置這個非root用戶,可以用來 ?????????????????????????????????管理該program ?????????????????????????????????默認不設置。。。非必須設置項 ;redirect_stderr=true??????????;?如果為true,則stderr的日志會被寫入stdout日志文件中 ?????????????????????????????????默認為false,非必須設置 ;stdout_logfile=/a/path????????;?子進程的stdout的日志路徑,可以指定路徑,AUTO,none等三個選項。 ?????????????????????????????????設置為none的話,將沒有日志產生。設置為AUTO的話,將隨機找一個地方 ?????????????????????????????????生成日志文件,而且當supervisord重新啟動的時候,以前的日志文件會被 ?????????????????????????????????清空。當?redirect_stderr=true的時候,sterr也會寫進這個日志文件 ;stdout_logfile_maxbytes=1MB???;?日志文件最大大小,和[supervisord]中定義的一樣。默認為50 ;stdout_logfile_backups=10?????;?和[supervisord]定義的一樣。默認10 ;stdout_capture_maxbytes=1MB???;?這個東西是設定capture管道的大小,當值不為0的時候,子進程可以從stdout ?????????????????????????????????發送信息,而supervisor可以根據信息,發送相應的event。 ?????????????????????????????????默認為0,為0的時候表達關閉管道。。。非必須項 ;stdout_events_enabled=false???;?當設置為ture的時候,當子進程由stdout向文件描述符中寫日志的時候,將 ?????????????????????????????????觸發supervisord發送PROCESS_LOG_STDOUT類型的event ?????????????????????????????????默認為false。。。非必須設置 ;stderr_logfile=/a/path????????;?這個東西是設置stderr寫的日志路徑,當redirect_stderr=true。這個就不用 ?????????????????????????????????設置了,設置了也是白搭。因為它會被寫入stdout_logfile的同一個文件中 ?????????????????????????????????默認為AUTO,也就是隨便找個地存,supervisord重啟被清空。。非必須設置 ;stderr_logfile_maxbytes=1MB???;?這個出現好幾次了,就不重復了 ;stderr_logfile_backups=10?????;?這個也是 ;stderr_capture_maxbytes=1MB???;?這個一樣,和stdout_capture一樣。?默認為0,關閉狀態 ;stderr_events_enabled=false???;?這個也是一樣,默認為false ;environment=A="1",B="2"???????;?這個是該子進程的環境變量,和別的子進程是不共享的 ;serverurl=AUTO????????????????;? ? ;?The?below?sample?eventlistener?section?shows?all?possible ;?eventlistener?subsection?values,?create?one?or?more?'real' ;?eventlistener:?sections?to?be?able?to?handle?event?notifications ;?sent?by?supervisor. ? ;[eventlistener:theeventlistenername]?;這個東西其實和program的地位是一樣的,也是suopervisor啟動的子進 ???????????????????????????????????????程,不過它干的活是訂閱supervisord發送的event。他的名字就叫 ???????????????????????????????????????listener了。我們可以在listener里面做一系列處理,比如報警等等 ???????????????????????????????????????樓主這兩天干的活,就是弄的這玩意 ;command=/bin/eventlistener????;?這個和上面的program一樣,表示listener的可執行文件的路徑 ;process_name=%(program_name)s?;?這個也一樣,進程名,當下面的numprocs為多個的時候,才需要。否則默認就 ?????????????????????????????????OK了 ;numprocs=1????????????????????;?相同的listener啟動的個數 ;events=EVENT??????????????????;?event事件的類型,也就是說,只有寫在這個地方的事件類型。才會被發送 ??????????????????????? ?????????????????????????????????? ;buffer_size=10????????????????;?這個是event隊列緩存大小,單位不太清楚,樓主猜測應該是個吧。當buffer ?????????????????????????????????超過10的時候,最舊的event將會被清除,并把新的event放進去。 ?????????????????????????????????默認值為10。。非必須選項 ;directory=/tmp????????????????;?進程執行前,會切換到這個目錄下執行 ?????????????????????????????????默認為不切換。。。非必須 ;umask=022?????????????????????;?淹沒,默認為none,不說了 ;priority=-1???????????????????;?啟動優先級,默認-1,也不扯了 ;autostart=true????????????????;?是否隨supervisord啟動一起啟動,默認true ;autorestart=unexpected????????;?是否自動重啟,和program一個樣,分true,false,unexpected等,注意 ??????????????????????????????????unexpected和exitcodes的關系 ;startsecs=1???????????????????;?也是一樣,進程啟動后跑了幾秒鐘,才被認定為成功啟動,默認1 ;startretries=3????????????????;?失敗最大嘗試次數,默認3 ;exitcodes=0,2?????????????????;?期望或者說預料中的進程退出碼, ;stopsignal=QUIT???????????????;?干掉進程的信號,默認為TERM,比如設置為QUIT,那么如果QUIT來干這個進程 ?????????????????????????????????那么會被認為是正常維護,退出碼也被認為是expected中的 ;stopwaitsecs=10???????????????;?max?num?secs?to?wait?b4?SIGKILL?(default?10) ;stopasgroup=false?????????????;?send?stop?signal?to?the?UNIX?process?group?(default?false) ;killasgroup=false?????????????;?SIGKILL?the?UNIX?process?group?(def?false) ;user=chrism???????????????????;設置普通用戶,可以用來管理該listener進程。 ????????????????????????????????默認為空。。非必須設置 ;redirect_stderr=true??????????;?為true的話,stderr的log會并入stdout的log里面 ????????????????????????????????默認為false。。。非必須設置 ;stdout_logfile=/a/path????????;?這個不說了,好幾遍了 ;stdout_logfile_maxbytes=1MB???;?這個也是 ;stdout_logfile_backups=10?????;?這個也是 ;stdout_events_enabled=false???;?這個其實是錯的,listener是不能發送event ;stderr_logfile=/a/path????????;?這個也是 ;stderr_logfile_maxbytes=1MB???;?這個也是 ;stderr_logfile_backups????????;?這個不說了 ;stderr_events_enabled=false???;?這個也是錯的,listener不能發送event ;environment=A="1",B="2"???????;?這個是該子進程的環境變量 ?????????????????????????????????默認為空。。。非必須設置 ;serverurl=AUTO????????????????;?override?serverurl?computation?(childutils) ? ;?The?below?sample?group?section?shows?all?possible?group?values, ;?create?one?or?more?'real'?group:?sections?to?create?"heterogeneous" ;?process?groups. ? ;[group:thegroupname]??;這個東西就是給programs分組,劃分到組里面的program。我們就不用一個一個去操作了 ?????????????????????????我們可以對組名進行統一的操作。?注意:program被劃分到組里面之后,就相當于原來 ?????????????????????????的配置從supervisor的配置文件里消失了。。。supervisor只會對組進行管理,而不再 ?????????????????????????會對組里面的單個program進行管理了 ;programs=progname1,progname2??;?組成員,用逗號分開 ?????????????????????????????????這個是個必須的設置項 ;priority=999??????????????????;?優先級,相對于組和組之間說的 ?????????????????????????????????默認999。。非必須選項 ? ;?The?[include]?section?can?just?contain?the?"files"?setting.??This ;?setting?can?list?multiple?files?(separated?by?whitespace?or ;?newlines).??It?can?also?contain?wildcards.??The?filenames?are ;?interpreted?as?relative?to?this?file.??Included?files?*cannot* ;?include?files?themselves. ? ;[include]?????????????????????????;這個東西挺有用的,當我們要管理的進程很多的時候,寫在一個文件里面 ????????????????????????????????????就有點大了。我們可以把配置信息寫到多個文件中,然后include過來 ;files?=?relative/directory/*.ini OK,上面提到的非必須設置項,一般來說,都是有默認值的,可以根據自己的需要去設置。。。如果不設置的,supervisor也能用起來 |
?
?
登錄樂搏學院官網http://www.learnbo.com/
或關注我們的官方微博微信,還有更多驚喜哦~
轉載于:https://my.oschina.net/learnbo/blog/866245
總結
以上是生活随笔為你收集整理的supervisor进程管理工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 热情雨林信号枪刷新时间
- 下一篇: javascript中focus是什么意