Linux下使用Daemon實現伺服器永久存活

2021-06-03 15:37:15 字數 2548 閱讀 2112

很多伺服器端設計者,很少會考慮到伺服器永久存活或熱替換的問題,貌似真的很少

其中永久存活最大的理論支援就是,我們如何真正的保證一組伺服器持續的存在,即便宕機?

其實沒有人能保證自己寫的**那麼完美無瑕,因為它的存在就是必須去崩潰,必須暴露更多的錯誤才能更加完美無瑕,所以除了自己有大量的測試**外,其實對於程式本身的測試很多是無法達到的,那麼我們就需要更多的外部支援,那麼在實際運營中,最好的就是daemon這樣的系統。

1、什麼是daemon

其實daemon是一種程序守護者(守護程序),他保護你的系統免於遭受外部或異常錯誤而導致的崩潰,並在最短的時間內使其迅速恢復的一種機制或系統。

當然我在這裡可不是教你怎麼去寫一種daemon,因為對很多團隊,那個成本很沒必要(我們有更省錢的做法)。

那就是 的自製軟體daemon,它將自動保護任意程序,並保證程式持續穩定執行,直到你將其kill或stop掉,前提自然是要關閉掉daemon本身。

2、安裝daemon

然後上傳至linux伺服器

tar -xvf daemon-0.6.4.tar.gz

cd daemon-0.6.4

注意:在這一步是不可以配置daemon的安裝路徑的,它將被預設安裝至 /usr/local/bin 中,但會建立全域性快捷方式,即可直接使用 daemon來執行程式。

./config

make -j8

make install-daemon

注意:這一步是為了安裝daemon的配置檔案 預設被安裝至 /etc/daemon.conf

make install-daemon-conf

3、配置daemon以及引數說明

其實daemon本身的引數是可以直接放入 /etc/daemon.conf 中的,那麼基本上配置檔案使用起來是非常容易的。

開啟遠端的daemon.conf

其配置檔案格式為

配置名稱(配置名稱與引數列表間,使用空格分隔) 引數列表(多引數使用 英文本母 逗號分隔),例如:

test_server respwan

引數說明(部分):

-h, --help - 列印幫助資訊

-v, --version - 列印版本資訊

-v, --verbose[=level] - 設定冗餘級別

-d, --debug[=level] - 設定除錯級別

-c, --config=path - 指定特殊的配置檔案路徑,預設為:/etc/daemon.conf

-n, --noconfig - 將不讀取任何配置檔案資訊即不讀取 /etc/daemon.conf

-n, --name=name - 配置專案的名稱,將載入目標名稱引數資訊

-x, --command=cmd - 定義特殊的字尾引數,例如需要引數啟動的話

-d, --chdir=path - 改變執行目錄

-m, --umask=umask - 改變目標執行程式的mask

-u, --unsafe - 執行無安全狀態執行程式

-s, --safe - 執行安全執行程式

-c, --core - 生成核心檔案,用於除錯

-r, --respawn - 當程式關閉時,是否重新啟動程式

-f, --foreground - 前台執行程式

-p, --pty[=noecho] - allocate a pseudo terminal for the client

-l, --errlog=spec - 定義daemon的目標錯誤日誌位置

-b, --dbglog=spec - 除錯日誌位置

-o, --output=spec - 輸出執行程式的日誌

-o, --stdout=spec - 輸出執行程式的輸出

-e, --stderr=spec - 輸出執行程式的錯誤日誌

--running - 檢測此名稱的程式是否已經執行

--restart - 重新啟動此程式名稱程式

--stop - 結束此名稱的程式

4、開始使用daemon

使用時,首先配置目標程式的引數,預設情況下,會新增引數 respawn 用於檢測當程式關閉時重新啟動程式,例如daemon.conf中增加此選項

test_server respwan,chdir=/home/test_server

例如此時我要啟動test_server那麼,直接在shell中輸入

daemon --name=test_server /home/test_server/test_server

此程序將被守護,直到整個執行週期完成。

此處啟動的是位於:/home/test_server 下的 test_server 程式

5、應用場合以及擴充套件探索

此系統非常適合應用於需要強力保護的程式,如配合其他異常捕捉系統,將可以很好的保證整個伺服器的執行以及崩潰bug的修復情況。

也可以通過其他外部程式,控制或監控daemon的運**況,可以合理的控制整個系統的開啟以及結束,太棒了這東西

linux下的守護(精靈)程序daemon

include include include include include include include include intmain else if pid 0 2.在子程序中建立新會話 setsid 3.改變當前目錄為根目錄 chdir 4.重設檔案許可權掩碼 umask 0 5.關閉檔...

編寫Linux系統下Daemon程式的方法步驟

一 引言 daemon程式是一直執行的服務端程式,又稱為守護程序。本文介紹了在linux下編寫daemon程式的步驟,並給出了例子程式。二 daemon程式簡介 daemon是長時間執行的程序,通常在系統啟動後就執行,在系統關閉時才結束。一般說daemon程式在後台執行,是因為它沒有控制終端,無法和...

linux 守護程序 daemon

原文出處 daemon程式簡介 daemon是長時間執行的程序,通常在系統啟動後就執行,在系統關閉時才結束。一般說daemon程式在後台執行,是因為它沒有控制終端,無法和前台的使用者互動。daemon程式一般都作為服務程式使用,等待客戶端程式與它通訊。我們也把執行的daemon程式稱作守護程序。比如...