当前位置: 首页 > 编程日记 > 正文

shell监控java接口服务_Linux系统下Java通过shell脚本监控重启服务

简介

最近运维人员提出需求,增加一个运维页面, 查询当前的业务进程信息包括:进程名称、启动命令、启动时间、运行时间等,可以通过页面点击重启按钮,可以重启后端的一系列系统进程。

思路

java程序获取linux进程信息可以通过shell脚本获取进程信息、通过读取proc文件系统获取进程信息。 但是为了系统的安全性、方便维护等角度出发,更多的是java通过shell获取和linux交互能力。

java程序中要执行linux命令主要依赖2个类:Process和Runtime:

Process:

ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例, 该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、 检查进程的退出状态以及销毁(杀掉)进程的方法。 创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr) 操作都将通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程。 父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小, 如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。 当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。 对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。

特别需要注意的是:

1,创建的子进程没有自己的终端控制台,所有标注操作都会通过三个流

(getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程(父进程可通过这些流判断子进程的执行情况)

2,因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,

则可能导致子进程阻塞,甚至产生死锁

特别需要注意:如果子进程中的输入流,输出流或错误流中的内容比较多,最好使用缓存(注意上面的情况2)

Runtime

每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。可以通过getRuntime方法获取当前运行时环境。 应用程序不能创建自己的Runtime类实例。

获取进程信息

获取进程的shell字符串 ps aux | grep procName| grep -v grep

java 调用shell 获取进程信息

查询所需的进程列表信息

重启业务进程

为了解决在某个进程启动失败的时候,web端可以获取到该进程的信息, 需要通过shell返回一个int值, 每个进程启动结果占用1个bit位方式实现,web端获取结果后,解决返回的结果,然后判断是否有进程启动失败。

首先准备好shell脚本,内容如下:

相关文章:

signature=680da11b802226668317d65ae7c38eb7,encryption with designated verifiers

摘要:The offline keyword guessing attack (KG attack) is a new security threat to the searchable public key encryption with designated verifier. Many techniques have been proposed to resist such an attack. However, all these techniques are only s…

PHPMailer类 发送邮件

/*** [sendMail 邮件发送类]* param [string] $address [收件人的邮件地址]* param [string] $nickname [收件人的昵称]* param [string] $subject [邮件的标题]* param [string] $content [邮件的内容]* param [string] $attachment [邮件的附件]* return …

oracle两张表 比较好,比较Oracle两张表的数据是否一样

比较Oracle两张表的数据是否一样爱搞机 2008-10-21 11:00在某些情况下,我们会需要比较两张表的数据是否一样。假设有两张表A与表B他的字段相同,但是当中的数据可能不同,而且有些字段的数据还有可能为空方法一(手动):把需要比较的两…

java applet 缺陷_Java Applet在最新JRE上的奇怪性能行为(7.55)

我们使用来自签名提供商的一些专有小程序来签署一些XML.当我们使用JRE 6u37 applet运行没有问题 – 运行速度非常快,从不冻结.但是当我们将JRE更新为7u55或更新时,它经常开始挂起.只有浏览器重启帮助.有没有办法解决这个问题可能是由一些参数或其他东西?这是运行代码…

在线考试系统html模板,请问谁有在线考试系统的网页模板?

请问谁有在线考试系统的网页模板?(2017-03-22 22:58:03)标签:杂谈《帝国网站管理系统》英文译为"EmpireCMS",简称"Ecms",它是基于B/S结构,且功能强大而帝国CMS-logo易用的网站管理系统。本系统由帝…

三角形(css3)

1 .userCard .sanjiao {//三角形的制作;2 width: 0;3 height: 0;4 border-left: 10px solid transparent;5 border-right: 10px solid transparent;6 border-bottom: 10px solid rgba(0, 0, 0, .9);7 margin: -23px 0 0 -10px;8 left: …

MySQL数据copy

摘自http://database.51cto.com/art/201011/234776.htm 1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据) CREATE TABLE newadmin LIKE admin 2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句…

oracle数据库有哪些文件构成,Oracle数据库架构中包括几层?每层都有什么元素?...

Oracle数据库架构中包括几层?每层都有什么元素?1 PL/SQL代表 A PROCEDURAL LANGUAGE/SQL B PROGRAM LANGUAGE SQL C POWER LANGUAGE SQL D 都不对2 _____引擎执行PL/SQL块A SQL B PL/SQL C ORACLE D 都不对3 一个对象可以呈现多种形式的能力称为A 多态B …

用html怎么 显示直线,html怎么用鼠标画出一条直线,鼠标移动时候要能看到线条...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼window.onload function(){var oC document.getElementById(c1);var oGC oC.getContext(2d);oC.onmousedown function(ev){var ev ev || window.event;oGC.beginPath();oGC.moveTo(ev.clientX-oC.offsetLeft,ev.clientY-oC.of…

bzoj 1962: 模型王子

呵呵呵呵http://wenku.baidu.com/link?urlo0CPVzuBDLJMt0_7Qph1T7TtdFOzu7O-apIpvaWbIYMz8ZWqBneGqI8LGtLdqpuK5fbQ_v-H01zHwPXDsPrioR5xjCDHjqJn_boYO87ikr_ 1 #include <bits/stdc.h>2 #define LL long long3 #define lowbit(x) x&(-x)4 #define inf 0x3f3f3f3f5 …

cygwin编译verilator_Windows 安装 verilator

windows bubun(cygwin)下载verilatortar xvzf verilator*.t*gzcd verilator*./configure报错./configure /cygdrive/e/download/verilator-4.016configuring for Verilator 4.016 2019-06-16checking whether to use hardcoded paths... yeschecking whether to show and stop …

navicat 几个 可用的东西

1.常用的 表格 一启动 就进入的某某连接某某数据库某某表 2. 结构 比对&#xff08;菜单栏 “工具里面”&#xff09; 3.数据对比 同上 4.保持连接 5.全局查询 在工具中查找 ------在数据库或模式中查找 转载于:https://www.cnblogs.com/hnqm/p/9534942.html

linux内核 semaphore,2.4内核里semaphore源码的一个疑问

博主你好, 请教一个问题.__down()里面有一段代码, 我觉得不那么保险.我先把__down的源码贴出来:void __down(struct semaphore * sem){struct task_struct *tsk current;DECLARE_WAITQUEUE(wait, tsk); //定义一个"队列项", 等待者是当前进…

Android UI体验之全屏沉浸式透明状态栏效果

前言&#xff1a; Android 4.4之后谷歌提供了沉浸式全屏体验&#xff0c; 在沉浸式全屏模式下&#xff0c; 状态栏、 虚拟按键动态隐藏&#xff0c; 应用可以使用完整的屏幕空间&#xff0c; 按照 Google 的说法&#xff0c; 给用户一种 身临其境 的体验。而Android 5.0之后谷歌…

html 多项选择,选项标签中的HTML多字段选择

这可以通过switch语句实现&#xff0c;但这不是最好的方法。我建议将以下函数作为change事件的事件处理程序。您还需要在窗口加载时运行它&#xff0c;以初始化它。function updateSel() {var sel document.getElementById(sel);var hidden sel.getElementsByClassName(hidde…

tp5.0 queue 队列操作

检查是否安装redis(没有请自行百度安装)&#xff1a; phpinfo&#xff1a; 配置thinkphp-queue&#xff0c;没有请执行 composer require topthink/think-queue 加入&#xff1a; 创建 队列 文件&#xff1a; use think\Queue;class TestQueue {// 测试public function queue()…

java redis管理_优雅时间管理Java轻松做到,想学么?

原标题&#xff1a;优雅时间管理Java轻松做到&#xff0c;想学么&#xff1f;来源 |http://rrd.me/gCQHp前言&#xff1a;需求是这样的&#xff0c;在与第三方对接过程中&#xff0c;对方提供了token进行时效性验证&#xff0c;过一段时间token就会失效.后台有定时任务在获取&a…

jenkins运行日志时间与linux,Jenkins 用户文档(运行多个步骤)

运行多个步骤管道由多个步骤组成&#xff0c;允许你构建、测试和部署应用程序&#xff0c;Jenkins管道允许你以简单的方式组成多个步骤&#xff0c;可以帮助你为任何类型的自动化过程建模。将“步骤”想象成执行单个操作的单个命令&#xff0c;当一个步骤成功时&#xff0c;它将…

HPU组队赛B:问题(二进制枚举)

时间限制1 Second 内存限制 512 Mb 题目描述 你有n个问题&#xff0c;你已经估计了第i个问题的难度为Ci,现在你想使用这些问题去构造一个问题集。比赛的问题集必须包含至少两个问题&#xff0c;而且比赛的总难度必须至少为l至多为r,此外最简单的问题和最难的问题之间的差异至少…

html脱机不显示图片,Python绘图脱机图表嵌入HTML(不工作)

aPlot是绘图文件的文件名。在在您的iframe中&#xff0c;您将.embed?width800&height550添加到文件名中&#xff0c;这将导致一个不存在的文件名。在当您删除这个字符串时&#xff0c;即src" aPlot "&#xff0c;它应该可以工作。在不必嵌入整个HTML文件&…

数据库分库分表(sharding)系列

数据库分库分表(sharding)系列转载于:https://www.cnblogs.com/gotodsp/p/6517478.html

php imagecopy 用法,php使用imagecopymerge()函数创建半透明水印

使用imagecopymerge() 函数创建半透明水印&#xff0c;供大家参考&#xff0c;具体内容如下// 加载要加水印的图像$im imagecreatefromjpeg(photo.jpeg);// 首先我们从 GD 手动创建水印图像$stamp imagecreatetruecolor(100, 70);imagefilledrectangle($stamp, 0, 0, 99, 69,…

linux系统yum源,Linux开启安装EPEL YUM源

我们用yum安装软件时,经常发现我们的yum源里面没有该软件&#xff0c;需要自己去wget&#xff0c;然后configure,make,make install&#xff0c;太折腾了。其实&#xff0c;CentOS还有一个源叫做 EPEL (Extra Packages for Enterprise)&#xff0c;里面有1万多个软件&#xff0…

MATLAB简易验证码识别程序介绍

本推文主要识别的验证码是这种:第一步: 二值化所谓二值化就是把不需要的信息通通去除&#xff0c;比如背景&#xff0c;干扰线&#xff0c;干扰像素等等&#xff0c;只剩下需要识别的文字&#xff0c;让图片变成2进制点阵。第二步: 文字分割为了能识别出字符&#xff0c;需要对…

mac终端命令-----常规操作

OSX 的文件系统 OSX 采用的Unix文件系统&#xff0c;所有文件都挂在跟目录 / 下面&#xff0c;所以不在要有Windows 下的盘符概念。 你在桌面上看到的硬盘都挂在 /Volumes 下。 比如接上个叫做 USBHD的移动硬盘&#xff0c;桌面上会显示出一个硬盘图标&#xff0c;它实际在哪里…

php true true true,php-为什么此评估为true

标签&#xff1a;php乳清这算是真的吗&#xff1f;$val20;//outputs that is an error123if($val2error123){echo that is an error123;}else{echo that is not an error123;}解决方法:您正在将字符串与整数进行比较.为了进行比较,首先将字符串转换为整数.当“ error123”转换为…

一个html文件放到服务器访问,访问云服务器里面的html文件

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器&#xff0c;帮助用户打造可靠、安全、灵活、高效的应用环境&#xff0c;确保服务持久稳定运行&#xff0c;提升运维效率三年低至5折&#xff0c;多种配置可选了解详情建站入门|…

limbo可以运行linux,这次真的了,安卓手机可以安装 Windows 10 了

原标题&#xff1a;这次真的了&#xff0c;安卓手机可以安装 Windows 10 了上回雷锋哥给大家分享过「安卓可以体验 "Windows 10" 了」实际上就是一个第三方安卓桌面启动器模仿 Windows 10 的主题&#xff0c;所以只能说是美化&#xff0c;并非真的运行 Windows 10 系…

Fedora dnf配置

1、在配置文件/etc/dnf/dnf.conf中加入&#xff1a; fastestmirrortruekeepcachetrue这样下载安装软件就快多了。 2、dnf常用命令 检查并升级可用软件包&#xff1a;$ dnf update删除缓存:$dnf clean all列出可用的软件源&#xff1a;$ dnf repolist搜索软件:$ dnf search $…

2021梧州一中高考成绩查询,2021年广西高考成绩查询网站查分网址:https://www.gxeea.cn/...

【摘要】高考结束后大家最为关心的问题就是在哪里查分&#xff0c;如何查分&#xff0c;高考频道特别整理2021年广西高考成绩查询查分网址&#xff0c;成绩公布时考生可直接点击网址进行查分&#xff0c;预祝大家都能顺利的考上理想的大学&#xff01;由于&#xff0c;各省级招…