简单的防止进程崩溃的Ubuntu和Windos脚本自动重启

主要功能是自动重启,防止睡觉的时候奖励消失

Ubuntu版本:

使用方法复制内容保存为 name.sh 其中name为你自己定义
随后把.sh放在跟node和farm官方源文件同目录,随后一样的给.sh赋予执行权限,然后只需要运行.sh即可
如同:

node的参数内容:

#!/bin/bash

# 定义中断信号的处理:当接收到 CTRL+C 时,输出信息并退出脚本
trap 'echo "CTRL+C received, exiting..."; exit' INT

# 构造命令 这里就是node主要参数设置了,可以按需修改,我这里的关闭了IPv6的公开node
CMD="./node run \
--chain gemini-3h \
--blocks-pruning 256 \
--state-pruning archive-canonical \
--rpc-methods unsafe \
--listen-on /ip4/0.0.0.0/tcp/30333 \
--dsn-listen-on /ip4/0.0.0.0/udp/30433/quic-v1 \
--dsn-listen-on /ip4/0.0.0.0/tcp/30433 \
--rpc-listen-on 0.0.0.0:5845 \
--rpc-cors all \
--base-path /root/sub \
--rpc-max-connections 9999 \
--farmer \
--name \"节点名字\""

# 日志文件路径
LOGFILE="/root/sub.log"

# 无限循环执行命令,确保在崩溃后重启
while true; do
    # 使用 tee 命令同时输出日志到文件和标准输出
    $CMD | tee $LOGFILE
    # 可选:如果您想在重启之前等待一段时间,取消下一行的注释
    # sleep 10
done
#建议输出日志,方便查询报错

farm的参数内容

#!/bin/bash

# 定义中断信号的处理:当接收到 CTRL+C 时,输出信息并退出脚本
trap 'echo "CTRL+C received, exiting..."; exit' INT


# 构造命令 这里主要是原参数,可以修改,
CMD="./farm farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE"

# 无限循环执行命令,确保在崩溃后重启
while true; do
    $CMD
    # 可选:如果您想在重启之前等待一段时间,取消下一行的注释
    # sleep 10
done
2 Likes

Windos版本

把内容保存为.ps1文件,随后一样的同目录运行即可
如图:
image

node的参数如下:

# 设置 PowerShell 的输出编码为 UTF-8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# 定义脚本中使用的变量
$nodeExePath = ".\node.exe" # node.exe 的路径
$logFilePath = "D:\sub\node_log.txt" # 日志文件的路径
$nodeArguments = @( # 传递给 node.exe 的参数列表
    "run",
    "--chain", "gemini-3h",
    "--base-path", "D:\sub",
    "--farmer",
    "--name", "节点名字"
)

# 主循环,用于重启 node.exe 如果它崩溃或退出
while ($true) {
    Write-Host "Starting node.exe process..."
    # 使用 & 运算符启动 node.exe 进程,确保参数正确分割并传递
    & $nodeExePath @nodeArguments | Tee-Object -FilePath $logFilePath -Append
    Write-Host "node.exe process has ended."

    Write-Host "Waiting for 10 seconds before restarting..."
    Start-Sleep -Seconds 10
}


farm的版本为:


# 设置 PowerShell 的输出编码为 UTF-8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# 定义脚本中使用的变量
$farmExePath = ".\farm.exe" # farm.exe 的路径
$logFilePath = "D:\sub2\farm_log.txt" # 日志文件的路径
$farmArguments = @( # 传递给 farm.exe 的参数列表
    "farm",
    "--reward-address", "钱包地址",
    "path=D:\sub2,size=2Gib"
)

# 主循环,用于重启 farm.exe 如果它崩溃或退出
while ($true) {
    Write-Host "Starting farm.exe process..."
    # 使用 & 运算符启动 farm.exe 进程,确保参数正确分割并传递
    & $farmExePath @farmArguments | Tee-Object -FilePath $logFilePath -Append
    Write-Host "farm.exe process has ended."

    Write-Host "Waiting for 10 seconds before restarting..."
    Start-Sleep -Seconds 10
}

主要,在更改参数的时候,最后一个参数不需要逗号,而除最后一个都需要逗号

如果需要帮助请留言,我会抽空回复

1 Like

Ubuntu更新
日志生成乱码比较多,可以将下面部分改为:

# 日志文件路径
LOGFILE="/root/sub.log"

# 无限循环执行命令,确保在崩溃后重启
while true; do
    # 使用 tee 命令同时输出日志到文件和标准输出
    $CMD | tee >(sed 's/\x1b\[[0-9;]*m//g' > $LOGFILE)
    # 可选:如果您想在重启之前等待一段时间,取消下一行的注释
    # sleep 10
done
#建议输出日志,方便查询报错
1 Like