如何設置奇偶校驗守護程序
我知道 parity 可以作為守護程序執行,因為 –help 有一個用法
parity daemon <pid-file> [options]
,但沒有提供進一步的幫助/線索/文件。是什麼<pid-file>
?一個程序 ID 文件,那是什麼?如果它應該是一個 systemd 單元文件,為什麼不這麼說。在搜尋和搜尋後我能找到的唯一其他線索是: https ://daowiki.atlassian.net/wiki/display/DAO/Ethereum+network 它說要編輯 parity.service 和 parity.conf 文件,但是兩者那些不存在。我可以嘗試創建它們,但是為什麼在Google上搜尋時什麼都沒有。我不能成為這個星球上第一個也是唯一一個想要將 parity 作為守護程序執行的人。(我不希望這個問題聽起來很消極。我非常感謝 ethcore 團隊及其平價項目為乙太坊社區做出的巨大貢獻!)
Ubuntu 16.04
奇偶校驗 v1.2.2
TL;DR - 它只是您選擇的空文件的路徑,並且可以防止守護程序的多個實例執行。(我認為該文件甚至不需要存在 - 它會為您創建。)
Parity 使用 的通用 Rust 實現
daemonize()
,它本身帶有一個pid_file
參數。更進一步,Rust 實現基於 Python 的daemonize 庫,它再次使用相同的想法。
基本思想是防止腳本/程序的多個版本同時執行。您的
pid_file
參數只是將儲存 pid 的文件的路徑,該文件最初為空,但將由正在執行的程序寫入。
- 當腳本啟動時,它做的第一件事就是尋找一個文件(無論你把它放在哪裡——可能類似於
/tmp/parity_daemon.pid
);- 如果該文件存在,則腳本會從中讀取一個 pid。該腳本現在檢查具有該 pid 的任何程序是否已在執行。(請注意,當守護程序正常退出時,應該清理 pid 文件,但有可能守護程序在上次執行時崩潰,因此 pid 文件仍然存在。);
- 如果有一個程序使用該 pid 執行,那麼已經有這個程序/守護程序的執行實例,所以新的守護程序實例應該退出。
我建議使用初始化系統(systemd、SysV、upstart)來管理 Parity 程序。這裡我將提供一個使用 systemd 的範例,並在末尾列出了其他資源。
首先,在 systemd 單元文件中定義服務:
cat <<EOF | sudo tee /etc/systemd/system/parity.service [Unit] Description=Parity Ethereum client Documentation=https://wiki.parity.io After=network.target [Service] Type=simple ExecStart=/usr/bin/parity Restart=on-failure # SIGHUP gives parity time to exit cleanly before SIGKILL KillSignal=SIGHUP [Install] WantedBy=multi-user.target Alias=parity.service EOF
我們希望避免奇偶校驗過程的不正常關閉,因為這會導致數據庫損壞。為了實現這一點,我們覆蓋了預設值
KillSignal
,因此SIGHUP
(相當於 ctrl-c)首先發送。90 秒後(預設情況下),如果程序仍在執行,SIGKILL
則將被發送。您可能還想修改
ExecStart
參數以包含其他選項。定義服務後,我們可以從磁碟重新載入定義:
sudo systemctl daemon-reload
啟用該服務,使其在重新啟動後自動啟動:
sudo systemctl enable parity
最後,啟動服務:
sudo systemctl start parity
還有一點需要注意的是
Restart=on-failure
。這將在程序死亡時自動重新啟動(包括如果您手動終止它)。要停止奇偶校驗,請使用:
sudo systemctl stop parity
要檢查狀態,請使用:
systemctl status parity
您還可以使用以下命令跟踪日誌
journald
:journalctl -f -u parity.service
請注意,init 服務提供了很大的靈活性,這只是一個使用 systemd 的簡單範例,這是現在最常見的。如需更多閱讀,請訪問以下資源:
- systemd:了解 Systemd 單元和單元文件(來自 Digital Ocean 的介紹)和手冊頁(freedesktop.org)
- SysVinit : ArchWiki
- 新貴:從 Ubuntu開始