# VPS指令之《保持节点自动运行》 **Published by:** [LittleMatch](https://paragraph.com/@yiyangzhi/) **Published on:** 2024-08-25 **URL:** https://paragraph.com/@yiyangzhi/vps ## Content 在VPS中让某个节点保持在线的常见方法包括以下几种:1. 使用 screen 或 tmux 会话:screen 和 tmux 是两个常用的终端多路复用器工具,可以在你断开 SSH 连接后保持进程运行。使用 screen:安装 screen:sudo apt-get install screen 创建一个新的 screen 会话:screen -S mynode 在这个会话中启动节点程序,比如:./start-node.sh 按下 Ctrl + A 然后 D 键退出 screen 会话,但保持进程在后台运行。重新连接到这个会话:screen -r mynode 使用 tmux:安装 tmux:sudo apt-get install tmux 创建一个新的 tmux 会话:tmux new -s mynode 启动你的节点程序。使用 Ctrl + B 然后 D 键退出会话并保持程序运行。重新连接到这个会话:tmux attach -t mynode 2. 使用 nohup 命令:nohup 命令可以使程序在后台运行,即使你退出了 SSH 会话。nohup ./start-node.sh & 这会将标准输出和错误输出重定向到 nohup.out 文件,并在后台运行程序。3. 使用 systemd 服务:如果你想让节点程序随着系统启动自动运行并在后台保持运行,可以将其配置为一个 systemd 服务。创建一个新的 systemd 服务文件,比如 mynode.service:sudo nano /etc/systemd/system/mynode.service 在文件中添加如下内容:[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 保存并退出编辑器,然后重新加载 systemd 服务配置:sudo systemctl daemon-reload 启动并启用服务,使其开机自启动:sudo systemctl start mynode sudo systemctl enable mynode 查看服务状态: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 连接时节点仍然保持在线。按下以下组合键:Ctrl + A(按住 Ctrl 键,然后按 A 键)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 脚本确认脚本名称如果 Dawn.sh 是你要启动 dawn 节点的脚本,可以尝试运行它。首先,确保它具有执行权限:chmod +x Dawn.sh 启动节点然后,使用 screen 启动这个脚本:screen -S dawn_node ./Dawn.sh 后台运行节点按 Ctrl + A,然后按 D 键,将 screen 会话移到后台,让节点保持运行。如果 Dawn.sh 不是你要运行的脚本,或你找不到正确的启动脚本,请告诉我,我会进一步帮助你。 你已经成功创建并暂时退出了一个名为 dawn_node 的 screen 会话。接下来,你可以按照以下步骤操作:重新连接到 screen 会话:如果你想重新进入这个 screen 会话,查看或启动 Dawn.sh 脚本,使用以下命令:screen -r dawn_node 启动 Dawn.sh 脚本:进入 screen 会话后,运行以下命令来启动 Dawn.sh 脚本:./Dawn.sh 将 screen 会话移到后台:一旦 Dawn.sh 脚本开始运行,并且你确认它正常启动后,可以按下以下组合键将 screen 会话移到后台运行:Ctrl + A(按住 Ctrl 键,然后按 A 键)D(直接按 D 键)这会使 dawn_node 会话在后台继续运行,你可以安全地断开 SSH 连接,而不影响节点的运行。再次查看会话状态:如果你想查看当前的 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 连接,它也会继续运行。 ## Publication Information - [LittleMatch](https://paragraph.com/@yiyangzhi/): Publication homepage - [All Posts](https://paragraph.com/@yiyangzhi/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@yiyangzhi): Subscribe to updates - [Twitter](https://twitter.com/Chrisjiucheng): Follow on Twitter