LINUX远程连接关闭后进程退出的解决方案

由于项目需要,开发的程序需要在LINUX上运行,后来发现一个问题,当我在窗口执行命令java xxxxxxxx之后,关掉窗口那么进程也就自动关闭了,后来去网上找了一些资料,有几个简单的方法,也看到了基本原理

首先贴一下参考资料Linux 技巧:让进程在后台可靠运行的几种方法

当窗口关闭的时候,当前窗口运行的进程会收到一个SIGHUP信号,从而结束进程,按照文中所述,要么忽略该信号,要么将进程运行在其他会话当中。

本文解决方案如下:

1.NOHUP命令
使用NOHUP命令运行的程序会将输出输出到当前路径下nohup.out文件里,窗口关闭的时候进程不会关闭,简单易用
在这里插入图片描述
命令最后加&表示后台运行,不影响当前窗口继续工作。

2.EXIT
正常运行命令之后,使用EXIT登出会话,由于远程连接没有关闭,进程会继续运行。

3.代码中忽略SIGHUP信号
使用kill -l查询命令查询结果如下:
在这里插入图片描述
发现SIGHUP对应1,在java中,可以实现SignalHandler接口重写处理命令忽略SIGHUP命令,由于本项目需要自己发送结束命令,所以干脆写成了只处理收到自定义的结束命令才处理,其余全部忽略,代码如下:

public final class StartStop implements SignalHandler{
    @Override
    public void handle(Signal signal) {
  	   if(signal.getNumber()==12){// 只处理12命令
  	  	  // 业务代码
  	   }		
    }
}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值