Cover photo

VPS指令之《保持节点自动运行》

在VPS中让某个节点保持在线的常见方法包括以下几种:

1. 使用 screentmux 会话:

  • screentmux 是两个常用的终端多路复用器工具,可以在你断开 SSH 连接后保持进程运行。

使用 screen

  1. 安装 screen

    sudo apt-get install screen
    
  2. 创建一个新的 screen 会话:

    screen -S mynode
    
  3. 在这个会话中启动节点程序,比如:

    ./start-node.sh
    
  4. 按下 Ctrl + A 然后 D 键退出 screen 会话,但保持进程在后台运行。

  5. 重新连接到这个会话:

    screen -r mynode
    

使用 tmux

  1. 安装 tmux

    sudo apt-get install tmux
    
  2. 创建一个新的 tmux 会话:

    tmux new -s mynode
    
  3. 启动你的节点程序。

  4. 使用 Ctrl + B 然后 D 键退出会话并保持程序运行。

  5. 重新连接到这个会话:

    tmux attach -t mynode
    

2. 使用 nohup 命令:

  • nohup 命令可以使程序在后台运行,即使你退出了 SSH 会话。

nohup ./start-node.sh &

这会将标准输出和错误输出重定向到 nohup.out 文件,并在后台运行程序。

3. 使用 systemd 服务:

  • 如果你想让节点程序随着系统启动自动运行并在后台保持运行,可以将其配置为一个 systemd 服务。

  1. 创建一个新的 systemd 服务文件,比如 mynode.service

    sudo nano /etc/systemd/system/mynode.service
    
  2. 在文件中添加如下内容:

    [Unit]
    Description=My Node Service
    After=network.target
    
    [Service]
    ExecStart=/path/to/start-node.sh
    Restart=always
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target
    
  3. 保存并退出编辑器,然后重新加载 systemd 服务配置:

    sudo systemctl daemon-reload
    
  4. 启动并启用服务,使其开机自启动:

    sudo systemctl start mynode
    sudo systemctl enable mynode
    
  5. 查看服务状态:

    sudo systemctl status mynode
    

这些方法可以确保你的节点在 VPS 上保持在线,即使你断开了 SSH 连接或 VPS 重启。

一、检查是否已安装screen:

你可以通过以下命令来检查你的 VPS 上是否已经安装了 screen

screen --version

如果 screen 已经安装,这个命令会输出 screen 的版本信息,例如:

Screen version 4.08.00 (GNU) 05-Feb-20

如果 screen 未安装,你会看到类似如下的提示信息:

-bash: screen: command not found

如果 screen 未安装,你可以使用以下命令来安装它:

sudo apt-get update
sudo apt-get install screen

二、太好了,既然你已经安装了 screen我们就可以继续设置 dawn 节点保持在线。以下是具体步骤:

第一步:创建一个新的 screen 会话

首先,我们创建一个新的 screen 会话,你可以将其命名为 dawn_node(或者你喜欢的名字)。

screen -S dawn_node

第二步:启动 dawn 节点

在这个 screen 会话中,启动你的 dawn 节点。假设你有一个启动 dawn 节点的脚本,比如 start-dawn.sh,你可以这样运行:

./start-dawn.sh

或者,如果你的 dawn 节点是通过其他命令启动的,只需在 screen 会话中运行那个命令。

第三步:让 screen 会话在后台运行

dawn 节点启动并运行后,你可以将 screen 会话移到后台,以便在断开 SSH 连接时节点仍然保持在线。按下以下组合键:

  1. Ctrl + A(按住 Ctrl 键,然后按 A 键)

  2. D(直接按 D 键)

这会使你退出 screen 会话的当前窗口,但 dawn 节点会继续在后台运行。

第四步:重新连接到 screen 会话

如果你想查看 dawn 节点的运行状态,重新连接到之前的 screen 会话:

screen -r dawn_node

第五步:查看所有 screen 会话

如果你有多个 screen 会话运行,或者忘记了会话的名称,可以使用以下命令查看所有运行中的 screen 会话:

screen -ls

第六步:退出并终止 screen 会话

如果你想完全终止 dawn 节点和 screen 会话,可以在 screen 会话中输入 exit 命令,或者使用 Ctrl + D 键:

exit

这样会话将会关闭,节点也会停止运行。

完成这些步骤后,dawn 节点将继续在后台运行,即使你断开 SSH 连接,它也会保持在线。

三、出现 No such file or directory 错误的原因可能有几种。以下是一些可能的解决方法:

1. 检查脚本的路径

  • 确保你当前所在的目录是包含 start-dawn.sh 脚本的目录。你可以使用 ls 命令列出当前目录的文件,查看 start-dawn.sh 是否存在:

    ls
    
  • 如果脚本位于另一个目录中,你需要先导航到该目录。例如,如果脚本在 /root/dawn/ 目录中,你需要使用以下命令:

    cd /root/dawn/
    
  • 然后再运行脚本:

    ./start-dawn.sh
    

2. 检查脚本的名称

  • 确保脚本的名称正确无误。可以使用 ls 命令查看文件名是否拼写正确。可能文件名中有大小写错误或额外的字符。

3. 检查执行权限

  • 如果脚本存在但无法运行,可能是因为它没有执行权限。你可以通过以下命令赋予脚本执行权限:

    chmod +x start-dawn.sh
    
  • 然后再尝试运行脚本:

    ./start-dawn.sh
    

4. 定位脚本的位置

  • 如果你不确定脚本的位置,可以使用 find 命令来查找它:

    find / -name start-dawn.sh
    

这个命令将搜索整个文件系统,找到名为 start-dawn.sh 的脚本。

如果这些步骤不能解决问题,请告诉我你发现了什么情况,我会进一步帮助你。

从你列出的文件和目录来看,似乎并没有名为 start-dawn.sh 的脚本文件。不过,有一个名为 Dawn.sh 的脚本,可能是你需要的脚本。

运行 Dawn.sh 脚本

  1. 确认脚本名称如果 Dawn.sh 是你要启动 dawn 节点的脚本,可以尝试运行它。首先,确保它具有执行权限:

    chmod +x Dawn.sh
    
  2. 启动节点然后,使用 screen 启动这个脚本:

    screen -S dawn_node
    ./Dawn.sh
    
  3. 后台运行节点Ctrl + A,然后按 D 键,将 screen 会话移到后台,让节点保持运行。

如果 Dawn.sh 不是你要运行的脚本,或你找不到正确的启动脚本,请告诉我,我会进一步帮助你。

你已经成功创建并暂时退出了一个名为 dawn_nodescreen 会话。

接下来,你可以按照以下步骤操作:

  1. 重新连接到 screen 会话:

    • 如果你想重新进入这个 screen 会话,查看或启动 Dawn.sh 脚本,使用以下命令:

      screen -r dawn_node
      
  2. 启动 Dawn.sh 脚本:

    • 进入 screen 会话后,运行以下命令来启动 Dawn.sh 脚本:

      ./Dawn.sh
      
  3. screen 会话移到后台:

    • 一旦 Dawn.sh 脚本开始运行,并且你确认它正常启动后,可以按下以下组合键将 screen 会话移到后台运行:

      • Ctrl + A(按住 Ctrl 键,然后按 A 键)

      • D(直接按 D 键)

    这会使 dawn_node 会话在后台继续运行,你可以安全地断开 SSH 连接,而不影响节点的运行。

  4. 再次查看会话状态:

    • 如果你想查看当前的 screen 会话,可以使用以下命令:

      screen -ls
      
    • 你将看到类似如下的输出,显示所有正在运行的 screen 会话:

      There is a screen on:
          474942.dawn_node   (08/25/2024 07:32:11 AM)   (Detached)
      1 Socket in /var/run/screen/S-root.
      

这样,你的 dawn 节点将保持自动在线,即使你断开了 SSH 连接,它也会继续运行。