如何在Linux中软杀死一个进程?

我最近在 linux 操作系统上设置了我的游戏服务器,并使用 SSH 来运行运行游戏服务器的 java 文件。为了让我能够退出 SSH 会话但保持服务器运行,我正在使用 nohup 并创建一个为我执行此操作的脚本:


#!/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

但是,我的服务器有关闭钩子,它希望退出 java 文件以便运行top,然后killing 服务的 PID 忽略了关闭钩子,从而破坏了“保存”状态并使我的服务器无法启动。


有没有办法我可以重新打开进程并轻柔地终止服务,即像退出它以便文件可以运行关闭挂钩?


我目前正在做的,没有运行关机钩子的是通过命令行使用它:


top

kill PID_HERE


凤凰求蛊
浏览 104回答 1
1回答

慕哥6287543

为了让我能够退出 SSH 会话但保持服务器运行,我正在使用 nohup 并创建一个为我执行此操作的脚本:首先:不要那样做!实施适当的服务。如果正在运行的机器使用systemd,您只需编写一个单元文件https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files如果您的机器使用init-script 样式的初始化系统,请复制一些类似网络服务的初始化脚本,例如网络服务器并根据需要对其进行修改。请记住,您应该为您的服务器创建一个新的用户/组,以便在启动时检查它是否没有以 root 身份运行(因为这总是一个坏主意)。但是,我的服务器有关闭挂钩这些钩子是如何实现的?如何通知您的服务器关闭?信号(这SIGTERM是由 发送的默认信号kill,尽管它的名称)是通知进程的标准方式,它们将正常终止。有关详细信息,请参阅官方 Java 文档:https ://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/signals.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java