-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Management zh TW
本章節涵蓋的相關主題是以最佳方式管理ASF程序。 雖然並非嚴格強制使用,但它包含了我們想分享的大量提示、技巧和良好實作,特別是對於系統管理員、打包ASF以便於在第三方儲存庫中使用的人,及進階使用者等。
在generic及linux變體版本中,ASF自帶[email protected]檔案,這是systemd的服務設定檔。 若您想以服務來執行ASF,例如能在您的設備啟動時自動執行,那麼正確的systemd服務無疑是最好的方法,因此我們強烈推薦透過服務,而不是使用nohup、screen或其他方法來管理。
首先,若您還尚未建立用來執行ASF使用者,請先建立它。 我們在此以asf使用者作為範例,若您想使用另外一個,您就必須將下列範例中的asf使用者取代成您想使用的使用者名稱。 我們的服務不允許您使用root來執行ASF,因為這被認為是不好的方式。
su # 或是 sudo -i
useradd -m asf下一步,將ASF解壓縮至/home/asf/ArchiSteamFarm資料夾。 資料夾的結構對我們的服務單元來說非常重要,它應為您的$HOME,也就是說ArchiSteamFarm資料夾需要放在/home/<user>中。 若您的操作完全正確,則現在應存在/home/asf/ArchiSteamFarm/[email protected]檔案。 若您使用linux變體版本,且檔案不在Linux中解壓縮,而是例如從Windows傳輸,那麼您也需執行chmod +x /home/asf/ArchiSteamFarm/ArchiSteamFarm。
我們將使用root的身分執行操作,所以需使用su或sudo -i。
我們最好先確認資料夾仍屬於asf使用者,執行一次chown -hR asf:asf /home/asf/ArchiSteamFarm即可。 因為例如您用root來下載且/或解壓縮.zip檔,權限可能會不正確。
接下來,cd /etc/systemd/system,執行ln -s /home/asf/ArchiSteamFarm/ArchiSteamFarm\@.service .,這將建立一個指向我們服務聲明的符號連結,並於systemd中註冊。 符號連結可以使ASF在更新時自動更新您的systemd單元──依據您的情形,您可能想要使用該方法,或使用cp複製檔案並自行管理。
然後,確保systemd能辨識我們的服務:
systemctl status ArchiSteamFarm@asf
○ [email protected] - ArchiSteamFarm Service (on asf)
Loaded: loaded (/etc/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://github.com/JustArchiNET/ArchiSteamFarm/wiki
請特別注意我們在@後宣告的使用者,在範例中是asf。 我們的systemd服務單元要求您宣告使用者,因為這會影響/home/<user>/ArchiSteamFarm二進制檔案的實際位置,及systemd生成程序的實際使用者。
若systemd回傳輸出與上述相似,則一切正常,我們就快完成了。 現在,剩下的步驟就是以我們所選的使用者實際啟動服務:systemctl start ArchiSteamFarm@asf。 等待一下,您就可以再次檢查狀態:
systemctl status ArchiSteamFarm@asf
● [email protected] - ArchiSteamFarm Service (on asf)
Loaded: loaded (/etc/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since (...)
Docs: https://github.com/JustArchiNET/ArchiSteamFarm/wiki
Main PID: (...)
(...)
若systemd的狀態為active (running),代表一切正常,您可以透過例如journalctl -r來驗證ASF程序已啟動並執行中,因為ASF預設輸出至控制台,會被systemd記錄。 若您滿意現在的設定,就能執行systemctl enable ArchiSteamFarm@asf命令,告訴systemd在啟動期間自動啟動您的服務。 這樣就完成了。
若您想停止程序,只需執行systemctl stop ArchiSteamFarm@asf。 同樣地,若您想要停用ASF自啟動,就執行systemctl disable ArchiSteamFarm@asf,非常簡單。
請注意,由於我們的systemd服務沒有啟用標準輸入,故您無法使用平常的方式來透過控制台輸入資訊。 透過systemd執行,等同於指定Headless: true設定。 幸運的是,若您需要在登入期間提供額外資訊,或更好地管理您的ASF程序,我們建議您使用ASF-ui,能夠容易地管理您的ASF。
可以為我們的systemd服務提供額外的環境變數,例如您想要使用自訂的--cryptkey命令列引數,就要指定ASF_CRYPTKEY環境變數。
若要提供自訂環境變數,使用mkdir -p /etc/asf來建立/etc/asf資料夾(若其不存在)。 我們建議使用chmod 700 /etc/asf,來確保只有root使用者能夠存取這些檔案,因為它們可能含有機密屬性,例如ASF_CRYPTKEY。 然後,編輯/etc/asf/<user>檔案,其中<user>代表您要執行服務的使用者(在上述範例中是asf,因此是/etc/asf/asf)。
此檔案應該包含所有您要提供給程序的環境變數:
# 只宣告您實際所需的變數
ASF_CRYPTKEY="my_super_important_secret_cryptkey"
ASF_NETWORK_GROUP="my_network_group"
# 及其他任何您想要使用的變數ASF含有邏輯,驗證自己是否以系統管理員(root)身分執行。 若設定環境正確,ASF程序的任何操作都不需要執行於Root,因此使用Root執行都被視為不好的方式。 這代表在Windows上,ASF永遠都不應該使用「以系統管理員執行」設定來執行;而在Unix上,ASF應要擁有專用的使用者帳號,或在桌面環境中使用您自己的帳號。
若要了解為什麼我們不鼓勵以Root執行ASF,請參閱Superuser及其他資料。 若您仍不信邪,請自行想像,如果ASF程序在啟動後立刻執行rm -rf /*命令,您的設備會怎樣。
這代表您錯誤設定了ASF試圖存取的檔案的權限。 您應使用root帳號(使用su或sudo -i),然後執行chown -hR asf:asf /path/to/ASF命令更正權限。其中,您需將asf:asf取代成實際執行ASF的使用者,/path/to/ASF取代成ASF的實際路徑。 若您使用自訂--path,讓ASF使用者使用不同的資料夾,您還需為此路徑執行一次上述命令。
完成本操作後,您應該不會再遇到任何與ASF無法ASF無法寫入自己的檔案的相關問題,因為您剛剛已將ASF所需檔案的擁有者改成實際執行ASF的使用者。
su # 或是 sudo -i
useradd -m asf
chown -hR asf:asf /path/to/ASF
su asf -c /path/to/ASF/ArchiSteamFarm # 或是 sudo -u asf /path/to/ASF/ArchiSteamFarm這些是手動啟動,但使用我們上述說明的systemd服務會更加輕鬆。
從V5.2.0.10版本開始,ASF不再阻止您這樣做,而只是顯示一條簡短的警告。 但如果有一天由於程式錯誤,使它炸毀了您的整個作業系統,並導致資料完全遺失,那就不要感到震驚──您已被警告過了。
ASF相容於同一台設備上執行多個程序實例。 實例是可以完全獨立或從同一個二進制檔案衍生(若您需以不同--path執行,可以使用命令列引數)。
在使用同一個二進制檔案執行多個實例時,請注意,您應該在所有設定中停用自動更新,因為它們並沒有同步自動更新相關的資訊。 若您想繼續啟用自動更新,我們建議您使用獨立的實例。但只要您能確保其他所有ASF實例已關閉,自動更新仍能正常運作。
ASF會盡量減少與其他ASF實例的作業系統層面的跨程序通訊。 這包含ASF針對其他實例檢查它們的組態設定資料夾,及共用*LimiterDelay全域設定屬性,確保執行多個ASF實例不會造成速率限制問題。 在技術方面,所有平台皆使用我們專屬的ASF自訂機制,在臨時資料夾中建立基於檔案的鎖,在Windows上為C:\Users\<YourUser>\AppData\Local\Temp\ASF,而在Unix上為/tmp/ASF。
執行ASF實例不需要共用相同的*LimiterDelay屬性,它們可為不同值,因為每個ASF會在獲得鎖後,將自身的設定延遲加入至釋放時間中。 若設定*LimiterDelay為0,ASF實例會完全跳過等待其他實例共用資源的鎖(但仍可能會維持一個共用鎖)。 當設定成其他任意值時,ASF會與其他ASF實例同步並等候輪到自身,然後在達到延遲設定後釋放鎖,使其他實例能夠繼續運作。
ASF在決定共用範圍時會考慮WebProxy設定,這代表使用不同的WebProxy設定的兩個ASF實例,不會互相共用它們的限制器。 這是為了使WebProxy設定可以在沒有過多延遲的情形下運作,就像不同網路介面的預期。 對於大多數情形來說這就應該夠了,但是,若您有特殊的自訂設定,例如經由其他方式的路由請求,您可以使用--network-group命令列引數指定網路群組,使您能夠宣告要與此實例同步的ASF群組。 請注意,自訂網路群組是專用的,也就是說ASF不再依據WebProxy來判斷群組,因為此時是由您自己所管理。
如果您想使用我們以上針對多個 ASF 實例說明中的 systemd 服務,這非常簡單,只需在我們的 ArchiSteamFarm@ 服務聲明中使用另一個用戶,然後執行其餘步驟即可。 This will be equivalent of running multiple ASF instances with distinct binaries, so they can also auto-update and operate independently of each other.







