使用 jar 方式,快速运行 minecraft-service

在Linux系统中,要将命令封装成.service文件,需要创建一个systemd服务单元文件。下面是创建一个名为minecraft.service​的示例,它会运行你提供的java​命令来启动Minecraft Spigot服务器。

  1. 打开终端。

  2. 使用文本编辑器创建一个新的.service文件。你可以使用nano​或者vi​。例如:

    sudo vi /etc/systemd/system/minecraft.service
    
  3. 在打开的编辑器中,输入以下内容:

    [Unit]
    Description=Minecraft Spigot Server
    After=network.target
    
    [Service]
    Type=simple
    User=root
    ExecStart=/usr/bin/java -Xms1G -Xmx4G -jar /root/minecraft-server/spigot-1.20.1.jar nogui
    
    [Install]
    WantedBy=multi-user.target
    
  4. 保存并关闭文件。如果你使用的是nano​,可以通过按Ctrl+X​,然后按Y​确认保存,最后按Enter​键退出。

  5. 重新加载systemd管理器配置,以确保新的服务文件被识别:

    sudo systemctl daemon-reload
    
  6. 启用服务,以便在启动时自动运行:

    sudo systemctl enable minecraft.service
    
  7. 启动服务:

    sudo systemctl start minecraft.service
    
  8. 检查服务的状态,确保它正在运行:

    sudo systemctl status minecraft.service
    

请注意,你可能需要根据你的系统配置和Minecraft服务器的安装位置来调整上述文件中的路径和用户。此外,确保你有足够的权限来创建和编辑/etc/systemd/system/​目录下的文件,通常需要root权限。


要删除原有的minecraft.service​,你可以按照以下步骤操作:

  1. 停止服务
    首先,你需要停止正在运行的minecraft.service​服务。可以使用以下命令:

    sudo systemctl stop minecraft.service
    
  2. 禁用服务
    然后,禁用服务以防止它在系统启动时自动运行:

    sudo systemctl disable minecraft.service
    
  3. 删除服务文件
    接下来,删除/etc/systemd/system/​目录下的minecraft.service​文件。使用以下命令:

    sudo rm /etc/systemd/system/minecraft.service
    
  4. 重新加载systemd管理器配置
    删除服务文件后,重新加载systemd管理器配置,以确保更改生效:

    sudo systemctl daemon-reload
    
  5. 确认服务已删除
    最后,检查服务是否已从systemd中删除:

    sudo systemctl status minecraft.service
    

    如果服务已被删除,你应该会看到一条消息,说明服务未找到或不存在。

请注意,直接删除服务文件可能会影响系统的稳定性,特别是如果该服务是由系统管理员或系统软件管理的。在删除任何服务之前,请确保你了解该服务的作用,以及删除它的后果。如果你不确定,最好咨询有经验的系统管理员。


要在后台运行命令,你可以使用 nohup​ 命令或者将命令放入一个脚本中,并使用 &​ 符号将脚本放入后台执行。以下是两种方法的示例:

方法一:使用 nohup​ 命令

nohup​ 命令可以防止你的命令在终端关闭后被终止。以下是如何使用 nohup​ 来运行你的 Java 命令:

nohup java -Xms1G -Xmx4G -jar /root/minecraft-server/spigot-1.20.1.jar nogui &

这条命令会在后台运行 Java 程序,并且即使终端关闭,程序也会继续运行。nohup​ 的输出默认会被重定向到名为 nohup.out​ 的文件中。

方法二:创建并运行一个脚本

  1. 创建一个脚本文件,例如 start_minecraft.sh​:
vi start_minecraft.sh
  1. 在打开的编辑器中,输入以下内容:
#!/bin/bash
java -Xms1G -Xmx4G -jar /root/minecraft-server/spigot-1.20.1.jar nogui
  1. 保存并退出编辑器。
  2. 给脚本文件添加执行权限:
chmod +x start_minecraft.sh
  1. 运行脚本并将其放入后台:
./start_minecraft.sh &

使用 &​ 符号将脚本放入后台执行,这样即使终端关闭,脚本也会继续运行。

检查后台进程

要检查后台进程的状态,你可以使用以下命令:

jobs

这将列出所有在后台运行的作业。

或者,你可以使用 ps​ 命令来查找 Java 进程:

ps aux | grep java

这将显示所有包含 java​ 关键字的进程。

注意事项

  • 确保你的 Java 应用程序能够处理在后台运行时可能遇到的任何问题,例如日志记录和错误处理。
  • 如果你使用的是 nohup​,确保 nohup.out​ 文件有足够的空间来存储输出,或者考虑将输出重定向到其他文件。
  • 如果你的系统配置了 ulimit​ 来限制后台进程的数量,你可能需要调整这些限制,或者确保你不会超出限制。

要查看后台运行的进程状态,你可以使用多种Linux命令。以下是一些常用的命令:

  1. 使用 jobs命令
    这个命令会列出当前终端会话中的后台作业。

    jobs
    
  2. 使用 ps命令
    ps​ 命令可以显示当前运行的进程。结合 grep​ 命令,你可以过滤特定的进程。

    ps aux | grep java
    

    这将列出所有包含 java​ 关键字的进程。

  3. 使用 top htop命令
    这些命令提供了一个动态更新的进程列表,你可以看到进程的实时状态。

    top
    

    或者,如果你的系统安装了 htop​:

    htop
    
  4. 使用 pgrep pkill命令
    pgrep​ 可以根据进程名或其他属性查找进程的PID。

    pgrep -f java
    

    这将查找所有包含 java​ 字符串的进程的PID。

  5. 使用 systemctl命令
    如果你的进程是作为系统服务运行的,你可以使用 systemctl​ 来查看服务的状态。

    systemctl status 服务名称
    

    例如,如果你的服务名为 minecraft.service​,你可以使用:

    systemctl status minecraft.service
    
  6. 查看日志文件
    如果后台进程有日志输出,查看日志文件也是了解进程状态的一种方式。例如,如果你使用了 nohup​,输出通常会被重定向到 nohup.out​ 文件。

    cat nohup.out
    
  7. 使用 tail命令
    tail​ 命令可以用来查看文件的最后几行,这在查看日志文件时非常有用。

    tail -f /path/to/logfile.log
    

    这将持续显示日志文件的最后几行,直到你停止命令(使用 Ctrl+C​)。

请根据你的具体需求选择合适的命令。如果你正在寻找特定的进程或服务,确保你知道进程的名称或服务的确切名称。

posted @ 2024-06-06 17:01  SHENHUANJIE  阅读(56)  评论(0编辑  收藏  举报