当前位置: 首页 > 知识库问答 >
问题:

将“sigterm”从Java发送到Bash脚本

云育
2023-03-14

我正在从Bash脚本启动一个名为 start.sh 的Java代码。Bash 脚本启动 Java 代码,然后运行 Java 代码。在Java程序结束时,我想发送一个信号回到Bash脚本以终止。请记住,Bash 脚本在 PID = 1 的情况下运行。我必须杀死PID 1过程。

我设置了bash脚本,使其在无限循环中运行,并< code >等待终止信号:

#!/bin/bash

# Run the java code here..

# Listen for an exit command.

trap 'exit 0' SIGTERM
while true; do :; done

我正在使用Docker实例,信号是< code>sigterm。我正在遵循这个教程:https://www . CTL . io/developers/blog/post/gracefully-stopping-docker-containers/它解释了如何从命令行发送sigterm。我想自动化这个过程,并在Java程序一结束就从内部关闭/杀死docker实例。

如何将信号发送回最初启动 Java 代码的 bash 脚本

我是否应该按照此方法将信号作为参数发送到bash脚本?或者它将使用不同的PID(而不是1)启动另一个bash脚本。

需要帮助!

共有1个答案

左丘积厚
2023-03-14
    < li >在bash脚本的第二行中写入“set -e”。 < li >不要使用trap and while。替换为“exec your_java_code_run”。

通过这种方式docker在java代码运行结束后获取SIGTERM。

例如:

#!/usr/bin/env bash
set -e

someOtherCodeIfNeed

exec your_java_code_run
 类似资料:
  • 问题内容: 尽管JVM会将SIGTERM和类似的信号转换为关闭挂钩,但是许多服务关闭脚本使用TCP端口启动关闭。(例如,Tomcat的关闭端口,Java Service Wrapper ,JBoss的管理接口等) 所以我认为不建议使用信号和关闭钩子来正常关闭Java服务,直到发现Play!框架通过关闭钩子管理服务生命周期,并且由生成的启动脚本假定将信号发送到JVM的PID。 我知道信号是与平台相关

  • 我试图通过套接字将protobuf从C++应用程序发送到Java应用程序。我正在使用一个简单的套接字在muc++程序发送protobuf。在通过网络发送之前,我已经将其序列化到char缓冲区。在我的Java(服务器)程序中,我使用ServerSocket来接收数据。 我有麻烦反序列化的原Buf在Java那边。它一直给我错误: 解析协议消息时,输入在字段中间意外结束。这可能意味着输入被截断,或者嵌入

  • 问题内容: 我不知道在Flash或Actionscript中进行编程。实际上,我是一名Java EE开发人员。 在Flash文件中,我有以下方法: 此方法会将录制的声音保存到我们将指定的文件夹中的“ recording.wav”中。 我想要做的是通过将录制的声音发送到Java Servlet来更改保存到磁盘的内容。 我找到了这段代码,但是我不知道如何在HTTP请求中发送的params中插入reco

  • 问题内容: 我正在尝试将消息从后台页面发送到内容脚本,然后将消息从该内容脚本发送到注入的脚本。我已经尝试过了,但是没有用。 这是我的代码的样子。 manifest.json background.js content_script.js injection.js 从第一部分背景-> content_script开始,消息发送不起作用。我的代码有什么问题吗? 问题答案: 由于内容脚本的注入方式,您的

  • 问题内容: 什么是场景 我想从Android向服务器发送多个ArrayList(通常为5个),并将其插入到mysql数据库中。 我成功完成的工作 我已使用JSON成功将Android中的单个值和多个值发送到PHP脚本 我已经使用JSON从mysql数据库到android接收了单条记录和多条记录 这是用于从服务器插入值并从中获取价值的代码 和TeacherAuthen.php脚本 我被困在那里 我没

  • 问题内容: 我有一个bash脚本a.sh,其中有一个python脚本b.py。python脚本计算某些内容,我希望它返回一个值,该值稍后将在a.sh中使用。我知道我能做 在a.sh中: 在b.py中: 但这不是那么方便,因为我还在b.py中打印了其他消息 有什么更好的方法吗? 编辑: 我现在正在做的只是 这意味着我可以在b.py中打印很多东西,但是只有最后一行(假设它不包含“ \ n”,这是最后一