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 클라이언트를 시작할 수 없습니다.