当前位置: 首页 > news >正文

Linux使用定时任务监控java进程并拉起

需求描述:

设计一个脚本,通过Linux定时任务,每分钟执行一次,监控jar包进程是否存在,存在则不做动作,不存在则重新拉起jar包程序。

定时任务配置:

*/1 * * * * bash -x /root/myfile/jars/check_status_job.sh

脚本内容:

#!/bin/env bash#重新加载环境变量,解决java命令不存在的问题。
. /etc/profileval="springboot-8053.jar";ids=`ps -ef | grep "$val" | grep -v "grep" | awk '{print $2}'`;
echo $ids;if [[ -z $ids ]];thenecho	"进程不存在,已被重新拉起!";nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jars/$val > /root/myfile/jars/default.out 2>&1 &nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jarsxxxx/$val > /root/myfile/jarsxxxx/default.out 2>&1 &
elseecho	"进程存在,无须拉起!";
fi

通过以上配置,就可以实现需求。

遇到的问题及排查过程:

1、java命令不存在问题

在这里插入图片描述

排查:

首先,确认自己是root账号配置的cron,并且,执行了命令检查java是否存在
在这里插入图片描述
发现是存在的,java环境变量也是配置了的。
郁闷了,那为什么cron会无法识别到了?
于是,请教了大佬,排查过程如下:
首先,这个问题的本质是,cron执行shell脚本时,环境变量没加载,cron会清空环境。
通过一下命令排查:

cat ~/.bashrc
cat ~/.bash_profile
which java
grep -r jdk /etc/profile*

以上命令执行结果截图:
通过
从而确定,是cron没有读取到自己配置的java环境变量。
于是,在脚本最开始,加载一下环境变量,解决该问题。

#重新加载配置的环境变量
. /etc/profile

2、程序日志输出到default的问题。

输出到日志的方法有很多种,大致思路就是,nohup重定向到default文件。
类似命令:

nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jars/springboot.jar > default.out 2>&1 &

但是,我的cron命令是:

bash -x /root/myfile/jars/check_status_job.sh

这样,可以看到shell脚本的运行步骤,方便排查脚本问题。
于是日志输出如下:
在这里插入图片描述
你会发现, > 重定向后的部分,没有构建到命令里。
这让初学者的我,傻眼了,我以为,日志打印的命令没构建全,那么,default肯定没法生成。
然后去脚本目录/root/myfile/jars/查看default.out文件,也确实没创建。
于是,我错误的认为,命令构建出错,导致default.out没能生成。

排查:

召唤大佬:

1default 默认生成在 /root 下
2、ls ~root		查看该目录下的文件有哪些
3、想要指定目录,就加绝对路径

在这里插入图片描述
发现,确实生成了default.out日志文件。
于是,重新构建我的nohup启动命令:

nohup java -jar  -Xmx256m  -Xms256m /root/myfile/jars/$val > /root/myfile/jarsxxxx/default.out 2>&1 &

这样,就可以在我指定的目录中生成日志文件了。
另外这里是覆盖重定向>,这样,每次重启后,default.out都是重新覆盖。从而,保证日志不会无限扩大。并且,shell脚本的日志,不会输出到default.out中。

补充:

另外一种日志输出的方法是,通过cron配置,把脚本日志全部输出到default.out里面
命令如下:

*/1 * * * * bash -x /root/myfile/jars/check_status_job.sh >> /root/myfile/jars/default.out 

这个办法不太好,会把shell脚本的日志和jar程序的日志都输出到default.out中,另外,这里只能用追加重定向>>,会导致日志文件无限扩大,不方便排查。

相关文章:

Linux使用定时任务监控java进程并拉起

需求描述: 设计一个脚本,通过Linux定时任务,每分钟执行一次,监控jar包进程是否存在,存在则不做动作,不存在则重新拉起jar包程序。 定时任务配置: */1 * * * * bash -x /root/myfile/jars/che…...

Win 10电脑摄像头提示错误代码0xa00f4244怎么办?

如果你的Windows 10电脑无法打开摄像头,提示“我们找不到你的摄像头”的错误消息,错误代码是0xA00F4244,原因可能是杀毒软件阻止了摄像头,或者是摄像头驱动程序有问题。 小编为你整理了摄像头错误代码0xA00F4244的解决方法&#…...

MFC消息机制

1.消息映射消息映射是一个将消息和成员函数相互关联的表。比如,框架窗口接收到一个鼠标左击消息,MFC将搜索该窗口的消息映射,如果存在一个处理WM_LBUTTTONDOWN消息的处理程序,然后就调用OnButtonDown。2.消息映射机制2.1 声明宏 写…...

全国计算机等级考试报名照片要求以及证件照制作教程

马上就全国计算机等级考试就要开始了,相信现在很多同学都在网上进行报名呢,报名的时候肯定需要用到个人证件照片,所以问题来了,我们怎么自己制作证件照片呢?计算机等级考试报名时对证件照都有哪些要求呢?该…...

SQLSERVER 临时表和表变量到底有什么区别?

一:背景 1. 讲故事 今天和大家聊一套面试中经常被问到的高频题,对,就是 临时表 和 表变量 这俩玩意,如果有朋友在面试中回答的不好,可以尝试看下这篇能不能帮你成功迈过。 二:到底有什么区别 1. 前置思…...

技术生态异军突起,昇思MindSpore进入AI框架第一梯队

ChatGPT掀起的新一轮人工智能狂欢下,隐藏在背后的“大模型”正进入越来越多开发者的视野。 诚如几年前开始流行的一种说法:数据是燃料、模型是引擎、算力是加速器。ChatGPT的出现,恰如其分地诠释了数据、模型和算力的“化学反应”。而在其中…...

审批流、工作流、业务流

是业务流、工作流、审批流 业务流:即业务流程,指为了完成某项业务而进行的各种工作的有序组合 工作流:即工作流程,指为了完成某项工作而进行的各种动作的有序组合 审批流:即审批流程,是对某项工作的审批活动…...

如何利用知识库加强内部管理?

许多公司都知道需要有一个面向客户的知识库,以加强客户服务,提供更好的客户体验。 但是很多企业没有意识到的是,拥有一个内部知识库软件对于员工改善沟通和促进知识共享的重要性。 协作是组织成功的关键部分,通过明确的远景和使…...

饕餮 NFT 作品集来袭!

饕餮 NFT 作品集包含 Chili Game 创作的体验《饕餮》第一章中的角色。可以在 The Sandbox 农历新年活动期间(01/18/23 至 02/28/23)体验。 饕餮的故事植根于中国古代神话,主要灵感来自《山海经》,一个关于捉妖人「青蛙侠」的故事。…...

C++中的内存分区、引用、函数

内存分区模型 代码区 存放CPU执行的机器指令代码区是共享的且具有只读性 全局区 全局变量和静态变量都存放在此处全局区还包括了常量区、字符串常量和其他常量也存放在此该区域的数据在程序结束后由操作系统释放const修饰的局部变量并不算在全局区 栈区 由编译器自动分配和释放…...

关于angular表格total模板中一直为0

哈喽 小伙伴们大家好昨天在用angular得antdesign组件得table表格 我用total模板 结果&#xff0c;total一直为0这可是愁坏我了 <ng-template #totalTemplate let-total>找到 {{ total }} 条结果</ng-template>[nzShowTotal]"totalTemplate"最后找到原因了…...

多线程事务怎么回滚

背景介绍1&#xff0c;最近有一个大数据量插入的操作入库的业务场景&#xff0c;需要先做一些其他修改操作&#xff0c;然后在执行插入操作&#xff0c;由于插入数据可能会很多&#xff0c;用到多线程去拆分数据并行处理来提高响应时间&#xff0c;如果有一个线程执行失败&…...

基于FPGA的时间数字转换(TDC)设计(五:基于Carry4的高精度TDC设计)

1.基于Carry4进位链设计原理 常见的基于FPGA开发的TDC有直接计数法,多相位时钟采样法,抽头延迟线法等,之前内容为基于多相位的TDC,本章节中,主要讲解基于抽头延迟线法。在Xilinx FPGA开发中,实现抽头延迟线法有很多种,如使用IODELAY构建延迟进位链,此处将介绍基于Carr…...

【C++】二叉搜索树的实现(递归和非递归实现)

文章目录1、二叉搜索树1.1 构建二叉搜索树1.2 二叉搜索树的插入1.3 二叉搜索树的删除1.4 二叉搜索树插入和删除的递归实现为了学习map和set的底层实现&#xff0c;需要知道红黑树&#xff0c;知道红黑树之前需要知道AVL树。 红黑树和AVL树都用到了二叉搜索树结构&#xff0c;所…...

春招来了,如何正确使用领英超高效招聘海外员工、挖掘人才?

金三银四到了&#xff0c;每年的这个时候都是企业招聘的好时机。而领英是目前全球最大的职场社交网络平台&#xff0c;基本上海外求职都是在使用它&#xff0c;所以很多企业涉及到海外招聘时&#xff0c;都会优先考虑领英&#xff0c;但是却经常缺乏一些经验技巧&#xff0c;今…...

Mysql中锁机制深入理解

Mysql中锁机制深入理解默认大家已经知道。分类性能悲观锁&#xff0c;乐观锁操作类型读锁&#xff0c;写锁&#xff0c;数据粒度表锁&#xff0c;行锁&#xff0c;页面锁更细粒度间隙锁&#xff0c;临键锁按使用来讲。由数据粒度出发。表锁&#xff0c;分为 共享锁&#xff0c;…...

去中心化社交网络协议除了Nostr还有哪些?

当下最火的去中心化社交软件Dmaus就是基于Nostr协议开发的&#xff0c;Nostr协议的基本情况之前的文章《一文了解去中心化社交网络协议Nostr》已经做了详细介绍&#xff0c;本文将介绍其他几个目前比较流行的去中心化社交协议。FarcasterFarcaster是由前Coinbase高管Dan Romero…...

【FT2000/4+X100】调试记录

订阅专栏 硬件环境FT2000/4+X100,单板结构,对外显示,运行银行麒麟操作系统。 一 生成UEFI.BIN,烧写在FT2000-4的QSPI Flash中 1 2 下载源文件 edk2-for-support.tar; 参考文件 ft2004c&D2000编译打包说明V1.0.5; 解压源文件; 根目录下 build2004C.sh为四核产品…...

我的Android启动优化—【黑白屏优化】

简述 在Android App使用过程中&#xff0c;对于应用的优化是一个加分项&#xff0c;举个例子&#xff0c;打开你的App需要2秒&#xff0c;人家0.5秒&#xff0c;这就是很大的用户体验上的优化。 问题的产生 在开发中&#xff0c;我们在启动app的时候&#xff0c;屏幕会出现一…...

TongWeb8编码设置说明

应用场景&#xff1a;在遇到中文问题时&#xff0c;常需要通过设置编码格式来解决问题。下面介绍TongWeb8的编码设置及优先级。一、web.xml中请求、响应编码的配置优先级最高在JavaEE8规范中web.xml增加了request, response编码配置&#xff0c;该配置优先级最高。<?xml ve…...

SCN随机配置网络模型在多特征分类预测中的应用

SCN随机配置网络模型SCN分类预测&#xff0c;SCN分类预测&#xff0c;多特征 输入模型。 多特征输入单输出的二分类及多分类模型。 程序内注释详细&#xff0c;直接替换数据就可以用。 程序语言为matlab&#xff0c;程序可出分类效果图&#xff0c;迭代优化图&#xff0c;混淆矩…...

OpenClaw浏览器自动化:Qwen3-VL:30B爬取图文数据到Notion

OpenClaw浏览器自动化&#xff1a;Qwen3-VL:30B爬取图文数据到Notion 1. 为什么需要自动化数据收集 上周我需要整理一批行业报告中的关键图表和结论&#xff0c;手动复制粘贴了3个小时后&#xff0c;突然意识到&#xff1a;这种重复性工作正是AI该解决的问题。于是我开始尝试…...

vLLM-v0.17.1GPU算力适配:华为昇腾CANN 7.0与vLLM对接可行性验证

vLLM-v0.17.1 GPU算力适配&#xff1a;华为昇腾CANN 7.0与vLLM对接可行性验证 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;由加州大学伯克利分校的天空计算实验室(Sky Computing Lab)最初开发&#xff0c;现已发展成为学术界和工业…...

Unity入门:从零开始认识Unity编辑器界面

Unity入门&#xff1a;从零开始认识Unity编辑器界面&#x1f4da; 本章学习目标&#xff1a;深入理解从零开始认识Unity编辑器界面的核心概念与实践方法&#xff0c;掌握关键技术要点&#xff0c;了解实际应用场景与最佳实践。本文属于《Unity工程师成长之路教程》Unity入门篇&…...

从码农到冥府CTO:重建六道轮回系统的质量保障实践

第一章 职业跃迁&#xff1a;技术人的冥府晋升之路1.1 技术职级体系重构冥府技术团队沿用硅谷职级模型&#xff0c;但增设业力评估维度&#xff1a;L1 鬼卒程序员&#xff1a;执行生死簿数据录入&#xff08;日均处理10万条因果记录&#xff09;L3 无常高级工程师&#xff1a;负…...

ButtonIn:嵌入式C++轻量级按键消抖库设计与实践

1. 项目概述ButtonIn 是一个专为嵌入式系统设计的轻量级、高可靠性按键输入封装库&#xff0c;其核心定位是为 ARM Cortex-M 系列微控制器&#xff08;如 STM32、NXP LPC、Renesas RA&#xff09;上的InterruptIn硬件外设提供工业级消抖&#xff08;Debouncing&#xff09;能力…...

STM32模拟UART实现技术详解

基于STM32的UART模拟实现技术解析1. UART通信基础原理1.1 异步串行通信基础通用异步收发器(UART)作为一种经典的串行通信方式&#xff0c;通过逐位传输实现数据通信。其核心优势在于传输线少、成本低&#xff0c;但相对并行通信速度较慢。异步通信模式下&#xff0c;收发双方的…...

OpenClaw+百川2-13B量化模型:自动化技术文档摘要系统搭建

OpenClaw百川2-13B量化模型&#xff1a;自动化技术文档摘要系统搭建 1. 为什么需要自动化文档摘要系统 作为一个经常需要阅读大量技术文档的开发者&#xff0c;我发现自己陷入了"文档海洋"的困境。每次研究新技术时&#xff0c;总会下载几十份PDF白皮书、API文档和…...

OpenClaw安全加固实践:Qwen3-32B私有镜像+本地防火墙配置

OpenClaw安全加固实践&#xff1a;Qwen3-32B私有镜像本地防火墙配置 1. 为什么需要安全加固&#xff1f; 当我第一次看到OpenClaw能够自动操作我的电脑时&#xff0c;既兴奋又担忧。兴奋的是它能够帮我完成重复性工作&#xff0c;担忧的是它本质上是一个拥有系统操作权限的AI…...

Qwen3-VL-8B快速原型开发:基于Typora风格输入实时生成图文并茂的技术文档

Qwen3-VL-8B快速原型开发&#xff1a;基于Typora风格输入实时生成图文并茂的技术文档 不知道你有没有过这样的经历&#xff1a;写一份技术方案或者产品文档&#xff0c;脑子里想法很多&#xff0c;但落到纸上就变得干巴巴的&#xff0c;总觉得缺几张图来说明&#xff0c;或者文…...