바이너리용 플래그인 이 스크립트를 실행하는 서비스를 시작하려고 합니다.
스크립트는 다음과 같습니다.
./geth_linux --config ./config.toml --datadir ./mainnet --cache 100000 \
--rpc.allow-unprotected-txs --txlookuplimit 0 --http --ws \
--maxpeers 100 --syncmode=snap --snapshot=false --diffsync
바이너리 디렉토리 /home/bsc의 터미널에서 이 스크립트를 실행하면 원하는 방식으로 실행됩니다.
서비스를 시작하면 다음 오류가 발생합니다.
(code=exited, status=203/EXEC)
이것은 내 .service 파일입니다.
[Unit]
Description=BSC Full Node
[Service]
User=bsc
Type=simple
WorkingDirectory=/home/bsc
ExecStart=/home/bsc/start.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
스크립트를 실행 가능하게 만들었습니다.
chmod +x /home/bsc/start.sh
나는 또한 다음을 실행했습니다.
chown +R bsc.bsc /home/bsc/*
또한 스크립트의 첫 번째 줄을 실행 ExecStart=/bin/bash /home/bsc/start.sh
하고 추가해 보았지만 역시 실패했습니다.#!/bin/bash
혼란스러워요.
우분투 20.04.3 LTS
시스템 오류 로그
Nov 24 04:25:14 rezonautik systemd[1]: Started BSC Full Node.
Nov 24 04:25:14 rezonautik bash[26939]: /home/bsc/start.sh: line 1: geth: command not found
Nov 24 04:25:14 rezonautik systemd[1]: bsc.service: Main process exited, code=exited, status=127/n/a
Nov 24 04:25:14 rezonautik systemd[1]: bsc.service: Failed with result 'exit-code'.
Nov 24 04:25:19 rezonautik systemd[1]: bsc.service: Scheduled restart job, restart counter is at 1.
Nov 24 04:25:19 rezonautik systemd[1]: Stopped BSC Full Node.
Nov 24 04:25:19 rezonautik systemd[1]: Started BSC Full Node.
Nov 24 04:25:19 rezonautik bash[26981]: /home/bsc/start.sh: line 1: geth: command not found
Nov 24 04:25:19 rezonautik systemd[1]: bsc.service: Main process exited, code=exited, status=127/n/a
답변1
경로 문제가 있습니다(설명이 일반적으로 일관되지 않습니다).
설명에서 스크립트는 shebang 줄로 시작해야 합니다 /home/bsc/start.sh
../geth_linux
오류 메시지가 말했습니다 line 1: geth: command not found
. 그것은 geth_linux
둘 다 아니라고 말합니다 ./geth_linux
. 그래서 분명히 약간의 혼란이 있습니다.
다음과 같은 경우에만 전화해야 합니다.
- 전체 경로
/home/bsc/start.sh
(예: 이것이 최선의 솔루션입니다) - 경로 없음 ,
geth_linux
즉 절대 파일 경로를 출력하는 명령./geth_linux
에만 작동합니다 .which
답변2
서비스 파일이 제대로 작동하는 것 같습니다. 스크립트 파일 높이를 다음 디렉터리로 이동하겠습니다.
mv ./YOUR_CURRENT_PATH /usr/local/bin/
그러면 어디에서나 geth_linux Linux에 액세스할 수 있습니다.
답변3
알았어, 알겠어. 문제는 bsc.service의 이름을 geth.service로 바꿔야 한다는 것입니다. 이렇게 변경한 후에는 모든 것이 잘 작동합니다.