---
title: "使用 erpc worker 執行與監看應用，並為其付費"
description: "查看應用是否在執行以及按小時計算的費用、回滾 release、從伺服器測量 RPC 延遲、備份其狀態資料，並結束其按小時計費。"
canonical: "https://erpc.global/zh-tw/doc/erpc-cli/worker-status-and-billing/"
locale: "zh-tw"
---

# 使用 erpc worker 執行與監看應用，並為其付費

`erpc worker status` 會顯示您的應用是否在執行，以及按小時計算的費用。每次啟動都會先顯示價格，而 `erpc worker delete --release-server` 會結束應用按小時使用的 gRPC、Shreds 與 Unlimited RPC，然後結束其按小時計費的伺服器。

本頁說明 ERPC CLI `v0.1.0-rc.4`，這是發行前版本。

## 檢查應用

```text
$ erpc worker status --env prod
api-prod on 203.0.113.10: running, release 20261101T093000Z-1a2b3c4d, pid 4217, up 2h 14m
  current 20261101T093000Z-1a2b3c4d, previous 20261028T171500Z-9f8e7d6c, 2 releases kept
  WAF: listening on port 8080, forwarding to 127.0.0.1:3000, since 2026-11-01T09:30:12Z; requests 5120, forwarded 5043, blocked 71, connections refused 12, app errors 6, addresses banned now 1
  `erpc worker delete --release-server --env prod` ends what this app is charged for.
```

`status` 會顯示應用處於鎖定狀態還是正在執行、是哪一個 release，以及從何時開始。當您已登入時，它還會顯示該環境按小時計算的費用（每個項目都附上您的帳戶就該項目被收取的價格），以及您帳戶的 Credit 與其可維持多久。`--json` 在 `hourly.charged` 下提供相同的內容。

不在帳戶收費項目之中的項目，會被標示為不在其中，而不會被稱為已結束，因為該清單可能比啟動晚一分鐘。在沒有工作階段時，或無法讀取您帳戶的收費項目時，`status` 會顯示已記錄的內容。

## 控制應用

| 命令 | 作用 |
| --- | --- |
| `erpc worker logs -n 200`, `logs -f` | 應用與 agent 的日誌。行中的控制字元會以 `?` 顯示 |
| `erpc worker start` | 執行應用；當 worker 處於鎖定狀態時會傳送金鑰 |
| `erpc worker stop`, `stop --lock` | 停止應用；`--lock` 還會將金鑰從記憶體中清除 |
| `erpc worker restart` | 停止後再次啟動 |
| `erpc worker releases` | 伺服器上保留的 release（`deploy.keep_releases`） |
| `erpc worker rollback`, `rollback --to <release>` | 回到上一個 release，或指定的 release。若該 release 的健康檢查連接埠現在屬於另一個正在執行的 worker，則會拒絕，並保持目前使用中的 release 不變 |
| `erpc worker api <PATH>` | 從本機讀取應用的 API，而 API 仍留在伺服器的 loopback 上（變更時用 `-X POST`、`-d '{...}'`） |
| `erpc worker trades [--profit]` | 應用在其伺服器上的交易 |
| `erpc worker list` | 本機上的應用及各自部署的位置；`--prune` 會移除其 `erpc.toml` 已不存在的應用 |

應用的 `API_TOKEN` 在這裡讀取，並透過標準輸入傳到伺服器，不會出現在任何命令列或任何日誌中。每個 worker 命令都接受 `--env <name>`（預設為 `default`）與 `--json`，但 `secret unlock` 與 `secret lock` 例外：它們處理的是本機的金鑰庫而非某個應用，因此不接受 `--env`。從任何位置執行時，命令會依 erpc 所知的名稱找到其應用；`secret put`、`secret rm`、`key import`、`firewall allow` 與 `firewall deny` 只透過 `--dir` 指定應用。

## 按小時計費的運作方式

- **每次啟動都會先顯示價格**。在終端機中，只有在得到確認後才會啟動；使用 `--yes` 時，指明要啟動什麼的命令列本身就是確認。
- **按小時計費的產品以 ERPC Credit 支付**，ERPC Credit 需事先購買；Credit 不足以支付的啟動會被拒絕。價格請見[價格](https://erpc.global/zh-tw/price/)與 [ERPC Web Dashboard](https://dashboard.erpc.global/zh-tw)。
- **新的 VPS 一經指定就會被記錄下來**，此時它尚未就緒。下一次部署會接手它，而不會再購買另一台。
- **對 `deploy` 而言，沒有得到回應的啟動會再次傳送，絕不會作為新的啟動傳送**。其請求鍵會保留在記錄中（`[env.<name>.starting]`），因此再次執行同一命令會傳送同一個請求。收到某些回應之後，它會一直保留，直到您手動移除為止（[erpc 無法記錄的購買](https://erpc.global/zh-tw/doc/erpc-cli/worker-troubleshooting/#erpc-無法記錄的購買)）。`erpc worker run` 不保留記錄，因此它的下一次執行會發出新的請求。
- **一次只部署一個環境**。同時開始的同一環境的兩次部署可能會購買兩份，這不受支援。
- **線路是否仍然存在，取決於帳戶被收費的項目**。不按小時計費的線路絕不會由 erpc 結束：請在儀表板中結束它。

## 移除應用

`erpc worker delete` 會移除 worker。`erpc worker delete --release-server` 還會結束其線路，然後結束其按小時計費的伺服器。無法結束的項目會保留在記錄中，不按小時計費的線路則會被列出名稱，以便在儀表板中結束。

- 單純的刪除會拒絕已購買但從未連上的 VPS，因為那樣會在它仍被收費時遺忘它。單純刪除一台已連上的按小時計費 VPS，會在它仍被收費時將其從記錄中移除，並對此發出警告。
- 使用 `--forget` 時，erpc 不會嘗試連線已無法連線的伺服器；`--forget-line <id>` 則會將在 erpc 之外結束的線路從記錄中移除。

## 從伺服器測量 RPC 延遲

`erpc worker bench` 從環境的伺服器為 RPC 呼叫計時：ERPC 的共享 RPC、其 Unlimited RPC，以及其他任何 RPC，並排比較。伺服器上的 agent 為每次呼叫計時，因此這些數字就是應用實際得到的。

```bash
erpc worker bench                                  # getSlot: shared RPC vs the Unlimited RPC
erpc worker bench --rounds 300 --interval 150      # for a plan that limits calls per second
erpc worker bench --url other=op://<vault-id>/<item-id>/url   # another provider's RPC
```

- `--method` 接受 `getSlot`、`getBlockHeight`、`getLatestBlockhash` 或 `getHealth`。
- `--no-shared` 會排除共享 RPC。`--url` 的值可以是 URL 本身、`op://…`、`keychain:…` 或 `keystore:…` 參照（指向保存含有金鑰之 URL 的位置；絕不能是交易金鑰的項目，此類參照會被拒絕），或是 `-`（從標準輸入讀取，或提示您以不顯示的方式輸入）。超過六個端點會被拒絕。
- bench 會輸出 p50、p90、p99、最小值與最大值、失敗次數及第一個失敗原因，以及每個回應比同一輪中最新的回應落後多少個 slot。
- 金鑰只透過標準輸入傳到伺服器，表格顯示協定、主機與連接埠。

## 備份應用的狀態資料

`erpc worker backup on` 會每天將應用的狀態資料備份到 ERPC Global Storage，由 restic 加密，時間為伺服器時間的 `--at`，並在其後 30 分鐘內執行。需要儲存方案（`erpc storage buy 5`）。

- **備份的內容**是應用的狀態資料 `/var/lib/private/erpc-worker-<id>`。release 不會備份，因為部署會將它們放回。Redis 與 PostgreSQL 的資料不在涵蓋範圍內。
- **伺服器無法刪除快照**。它從不持有 erpc 的工作階段、帳戶的管理金鑰或帳戶的主密碼。
- **被接管的伺服器可以**讀取帳戶中每台機器的快照（包括本機的）；在 `off` 之後仍保有儲存庫的金鑰（restic 從不更換此金鑰）；以另一台機器的名稱新增快照，因此發生接管之後，請檢查 `restore latest` 會選中哪一個快照；以及填滿帳戶的儲存空間，這會使每台機器的備份都停止。`erpc worker backup off` 會先撤銷伺服器的存取金鑰，無論伺服器是否回應。
- **restic 會在 worker 執行期間按檔案當下的樣子複製**，因此資料庫可能需要自己的傾印，才能恢復為一致的狀態。伺服器關機期間錯過的執行，會在伺服器重新上線後執行。
- `erpc worker backup off`、`status` 與 `now` 分別用於停止備份、回報備份情況與執行備份。`off` 之後快照仍會保留，`erpc backup prune --host` 可精簡舊的快照。

在本機上執行 `erpc backup init` 之後，從本機恢復：

```bash
erpc backup restore latest --from-host erpc-worker-<id>-<tag> --path /var/lib/private/erpc-worker-<id> --target ./restored
```

## 多個環境與多台機器

- 同一台伺服器上的多個 worker 各自作為獨立的單元執行，共用伺服器的防火牆表，且各自只開放自己的連接埠。
- 一個應用可以有多個環境（`[env.staging]`、`[env.prod]`），每個環境都有自己的伺服器與線路。
- 環境可以將其伺服器資訊保存在 1Password，而不是 `erpc.toml` 中。如此一來，任何登入該保險庫、並擁有應用儲存庫的機器，都能執行所有命令；這類應用中的 `keychain:` 與 `keystore:` 參照會收到警告，因為其他機器無法讀取它們。當 `erpc login` 將工作階段保存在那裡時，新環境會將其資訊保存在 1Password；`deploy --vault <vault-id>` 指定另一個保險庫，`deploy --inline` 則將資訊保存在 `erpc.toml` 中。
