systemdサービスの起動に問題がありますgeth
。
サービス仕様ですgeth.service
[Unit]
Description=Geth
[Service]
Type=simple
User=eth
Restart=always
RestartSec=12
ExecStart=/home/eth/starteth.sh
[Install]
WantedBy=default.target
これはstarteth.sh
スクリプトです。
#!/usr/bin/env bash
geth --syncmode "fast" --rpc --rpcport "9820" --rpcaddr "127.0.0.1" --rpccorsdomain "*"
サービスの開始およびヘルスチェック中にエラーが発生しました。
root@server:~# sudo systemctl start geth
root@server:~# sudo systemctl status geth
● geth.service - Geth
Loaded: loaded (/etc/systemd/system/geth.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Wed 2021-06-16 22:02:51 CEST; 3s ago
Process: 19295 ExecStart=/home/eth/starteth.sh (code=exited, status=203/EXEC)
Main PID: 19295 (code=exited, status=203/EXEC)
編集:OSはUbuntu 18です。
答え1
これはどこかに実行可能ファイルをstarteth.sh
見つけることを期待するシェルスクリプトですが、systemdは非常に少ないファイルを使用しているため、見つからない可能性があります。そのような文書はどこにありますか?試してみてください。次に、inの前に正しい絶対パスを追加します。geth
$PATH
$PATH
locate geth
find / -name geth
geth
starteth.sh
答え2
上記のように、gethを探す答えはそうです。 geth ファイルは /usr/bin/geth に存在します。
しかし、エラーが発生し続けます。
× geth.service - Ethereum go クライアント ロード済み: ロード済み (/etc/systemd/system/geth.service; 有効化、ベンダーデフォルト: 有効化) アクティビティ: 2023 年 4 月 26 日水曜日 13:00 以降 17 日以降の失敗(結果:終了)コード):37 UTC。 2分46秒前のプロセス: 2862 ExecStart=/usr/bin/geth --networkid 9988 --datadir /opt/ethpoa2/node1/data --port 30303 --ipcdisable > 基本 PID: 2862 コード=終了、ステータス=217 /ユーザー)CPU:1ms
4月26日 13:17:37 ip-172-31-87-252 systemd[1]: geth.service: '終了コード'のため失敗しました。 4月26日 13:17:37 ip-172-31-87-252 systemd[1]: geth.service: ジョブの再開がスケジュールされ、再開カウンタは 5 です。 4月26日 13:17:37 ip-172-31-87- 252 systemd[1]: Ethereum go クライアントが停止しました。 4月26日 13:17:37 ip-172-31-87-252 systemd[1]: geth.service: 起動要求が速すぎました。 4月26日 13:17:37 ip-172-31-87-252 systemd[1]: geth.service: '終了コード'のため失敗しました。 4月26日 13:17:37 ip-172-31-87-252 systemd[1]: Ethereum go クライアントを起動できません。