Parity

如何設置奇偶校驗守護程序

  • June 1, 2018

我知道 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 的簡單範例,這是現在最常見的。如需更多閱讀,請訪問以下資源:

引用自:https://ethereum.stackexchange.com/questions/7392