我正在尝试启动一个运行此脚本的服务,该脚本只是二进制文件的标志
这是脚本:
./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
在脚本的第一行添加,但也失败了。
我很困惑。
Ubuntu 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
存在路径问题(并且您的描述普遍不一致)。
在您的描述中,脚本/home/bsc/start.sh
以开头,./geth_linux
但应以 shebang 行开头。
错误消息说line 1: geth: command not found
。它既没有说geth_linux
也没有./geth_linux
。所以显然存在一些混淆。
您应该仅使用以下命令调用:
- 完整路径例如
/home/bsc/start.sh
(这是最好的解决方案) - 没有路径 ie
geth_linux
而不是./geth_linux
;这只适用于命令which
输出绝对文件路径的命令。
答案2
服务文件看起来工作正常。我将您的脚本文件高度移动到以下目录:
mv ./YOUR_CURRENT_PATH /usr/local/bin/
然后 geth_linux linux 就可以从任何地方访问。
答案3
好吧,我明白了。问题是 bsc.service 必须重命名为 geth.service。进行此更改后一切正常