代码之家  ›  专栏  ›  技术社区  ›  Jaquarh

如何在Linux中柔和地终止进程?

  •  0
  • Jaquarh  · 技术社区  · 5 年前

    #!/bin/bash
    cd "RSPS"
    echo "Booting the RSPS..."
    nohup java -Xmx220m -cp bin:lib/* com.ruseps.GameServer &
    

    tail 像这样的命令:

    #!/bin/bash
    cd "RSPS"
    tail -f nohup.out
    

    top 然后 kill 调用服务的PID忽略了关闭钩子,从而打破了“保存”状态,使我的服务器无法启动。

    是否有一种方法可以重新打开进程并轻轻地终止服务,例如退出它以便文件可以运行关闭挂钩?

    我目前正在做的事情(没有运行关机挂钩)是通过命令行使用以下命令:

    top
    kill PID_HERE
    
    1 回复  |  直到 5 年前
        1
  •  3
  •   datenwolf    5 年前

    首先: 不要那样做!

    实施适当的服务。如果正在运行的机器使用 系统的 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files

    如果您的机器使用 init -脚本风格的初始化系统,复制一些类似网络服务(如Web服务器)的初始化脚本,并根据需要进行修改。

    请记住,您应该为您的服务器创建一个新的用户/组以root身份运行,并在启动时让它检查它是否以root身份运行(因为这总是一个坏主意)。

    但是,我的服务器有关闭挂钩

    这些钩子是如何实现的?如何通知服务器关闭?这个 SIGTERM 信号(这是由发送的默认信号) kill ,尽管名称不同)是通知流程正常终止的标准方式。有关详细信息,请参阅官方Java文档: https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/signals.html