天天看點

erlang]supervisor(監控樹)的重新開機政策

[ChildSpec,...] 是在init之後預設要啟動的子程序。

{Type, Times, Sec}

Type: 重新開機政策

one_for_one: 一個子程序終止,隻重新開機該程序,在init的時候會啟動參數内的子程序

simple_one_for_one: 同one_for_one,但是在init的時候不會啟動子程序,需要動态調用啟動

one_for_all: 一個子程序終止,将重新開機所有子程序

rest_for_one: 一個子程序終止,将按順序重新開機這個子程序和之後順序的子程序

Times: 次數(監控頻率)

Sec: 秒數(監控頻率),如果在Sec秒内重新開機次數超過Times,則終止所有程序,并終止監控樹,将由父程序決定它的命運

Id 子程序ID辨別符

StartFunc = {M, F, A}: 子程式啟動入口

Restart: 重新開機方案

<code>permanent</code>: 如果app終止了,整個系統都會停止工作(application:stop/1除外)。

<code>transient</code>: 如果app以normal的原因終止,沒有影響。任何其它終止原因都誰導緻整個系統關閉。

<code>temporary</code>: app可以以任何原因終止。隻産生報告,沒有其它任何影響。

Shutdown: 終止政策

<code>brutal_kill</code>: 無條件終止

逾時值(毫秒): 終止時,如果逾時,則強制終止

<code>infinity</code>: 如果子程序是監控樹,設定為無限大,等待其終止為止

Type:

<code>worker</code>: 普通子程序

<code>supervisor</code>: 子程序是監控樹

Modules:

<code>dynamic</code>: 當子程序是gen_event

<code>[Module]</code>: 當子程序是監控樹、gen_server或者gen_fsm,表示回調子產品名稱

Sup通常可以為<code>?MODULE</code>