菜鸟科技网

stop server 命令

核心要点

在执行任何停止命令之前,请务必注意:

stop server 命令-图1
(图片来源网络,侵删)
  1. 安全停止:优先使用程序自带的、设计好的停止命令,这可以确保服务器程序有机会完成正在处理的事务、保存数据,并优雅地关闭所有连接,而不是直接杀死进程,这可能导致数据损坏或服务中断。
  2. 确认操作:在服务器上执行停止命令前,确保你知道其影响,尤其是在生产环境中。

Minecraft (我的世界) 服务器

这是 stop 命令最经典和直接的应用场景。

  • 命令:在服务器控制台(通常是终端窗口)中直接输入:

    stop
  • 作用:服务器会向所有在线玩家广播 "Server shutting down..." 消息,然后保存所有世界数据,并安全地关闭程序。

  • 相关命令

    stop server 命令-图2
    (图片来源网络,侵删)
    • save-all:在 stop 之前手动保存一次世界数据,更安全。
    • save-off:暂停自动保存,通常在执行备份前使用。
    • save-on:恢复自动保存。

Minecraft 代理服务器 (如 BungeeCord, Waterfall, Velocity)

代理服务器的停止命令略有不同,因为它需要先踢掉所有连接到它的游戏服务器上的玩家。

  • 命令:在代理服务器控制台中输入:
    end
  • 作用end 命令会通知所有后端的游戏服务器停止,然后将所有玩家踢出,最后关闭代理服务器本身。stop 命令通常只关闭代理服务器,而不会通知后端服务器,可能导致玩家卡住。

Minecraft 服务器管理面板 (如 PM2, PocketMine-MP)

这类服务器通常有自己的管理脚本。

  • PM2 (Node.js 进程管理器,常用于 Minecraft 服务器或 Node.js 应用)

    • 停止并删除进程
      pm2 stop <app_name_or_id>
      pm2 delete <app_name_or_id>
    • 停止所有进程
      pm2 stop all
  • PocketMine-MP (PHP Minecraft 服务器)

    stop server 命令-图3
    (图片来源网络,侵删)
    • 命令:在控制台中输入:
      stop
    • 或者使用系统命令
      # 查找进程 ID
      ps aux | grep "PocketMine-MP"
      # 然后杀死进程 (不推荐,除非无响应)
      kill <PID>

Web 服务器 (Apache, Nginx)

Web 服务器的停止方式通常通过系统服务管理命令。

  • Apache (httpd)

    • 停止服务

      # 对于使用 systemd 的系统 (如 Ubuntu 16+, Debian 8+, CentOS 7+)
      sudo systemctl stop apache2
      # 或者
      sudo systemctl stop httpd
      # 对于旧版系统 (使用 SysVinit)
      sudo /etc/init.d/apache2 stop
      # 或者
      sudo service apache2 stop
  • Nginx

    • 停止服务

      # 对于使用 systemd 的系统
      sudo systemctl stop nginx
      # 对于旧版系统
      sudo /etc/init.d/nginx stop
      # 或者
      sudo service nginx stop

数据库服务器 (MySQL, MariaDB)

停止数据库服务器风险较高,因为它可能正在写入数据。

  • 安全停止 (推荐):它会等待所有正在执行的语句和所有更新都完成后才关闭。

    # 进入 MySQL/MariaDB 命令行
    mysql -u root -p
    # 在 MySQL 提示符下执行
    SHUTDOWN;

    或者使用系统命令:

    sudo systemctl stop mysql
    # 或
    sudo systemctl stop mariadb
  • 快速停止 (不推荐):它会立即关闭服务器,可能会导致数据损坏,仅在紧急情况下使用。

    sudo systemctl stop mysql --force
    # 或
    sudo systemctl stop mariadb --force

应用服务器 (如 Tomcat, Jetty)

  • Apache Tomcat

    • 使用脚本:最推荐的方式,位于 Tomcat 的 bin 目录下。

      # Linux / macOS
      ./shutdown.sh
      # Windows
      shutdown.bat
    • 使用系统服务:Tomcat 被配置为系统服务。

      sudo systemctl stop tomcat9  # 或 tomcat8, tomcat10 等
  • Jetty

    • 使用脚本

      # Linux / macOS
      ./jetty-stop.sh
      # Windows
      jetty-stop.bat

通用方法 (如果以上都不适用)

如果你不知道服务器程序的具体停止命令,或者它已经无响应,可以使用通用的操作系统命令来强制终止进程。这是最后的手段,有数据丢失风险。

  • 查找进程 ID (PID)

    # 根据进程名查找 (查找 java 进程)
    ps aux | grep java
    # 输出示例:
    # user    12345  5.3  20.1  876543 987654 ?      Sl   10:30 120:45 java -Xms4G -Xmx8G -jar server.jar
    # 这里的 12345 就是进程 ID
  • 终止进程

    • kill - 优雅地终止:首先尝试发送 SIGTERM 信号,让程序有机会自己清理并退出。
      kill 12345
    • kill -9pkill -9 - 强制杀死kill 无效,使用 SIGKILL 信号强制立即终止,程序无法做任何清理工作。
      kill -9 12345
      # 或者直接用进程名杀死所有同名进程
      pkill -9 java

总结表格

服务器类型 推荐停止命令 备注
Minecraft (游戏) stop 在服务器控制台输入。
Minecraft (代理) end 会通知后端服务器并踢出玩家。
Apache sudo systemctl stop apache2 使用系统服务管理器。
Nginx sudo systemctl stop nginx 使用系统服务管理器。
MySQL/MariaDB mysql> SHUTDOWN;sudo systemctl stop mysql 优先使用 SQL 命令安全关闭。
Tomcat ./shutdown.sh 使用其自带的脚本。
通用 Node.js/PM2 pm2 stop <app_name> 使用 PM2 进程管理器。
未知/无响应 kill -9 <PID> 最后手段,强制终止,有风险。

希望这份详细的指南能帮助你正确地停止你的服务器!

分享:
扫描分享到社交APP
上一篇
下一篇