java - 检查 jar 是否从 shell 运行

标签 java shell sh executable-jar

我有一个 java jar 程序,我试图在我的机器启动时运行它。理想情况下,shell 脚本将每 60 秒检查一次以确保 jar 正在运行。我如何检查 jar 是否在 centos 上运行,这似乎不起作用?

我当前的 .sh 文件:

#!/bin/bash

while [ true ]
do
    cnt=`ps -eaflc --sort stime | grep /home/Portal.jar |grep -v grep | wc -l`
    if(test $cnt -eq 3);
    then
        echo "Service already running..."
    else
        echo "Starting Service"
        java -jar /home/Portal.jar >> /dev/null &
    fi
    sleep 1m
done

我用了this到目前为止的引用。

最佳答案

根据您的程序执行的操作,可能会有或多或少的智能方法来检查它。例如,如果您有一些服务器,它将监听一个端口。

然后像

netstat -an | fgrep tcp | fgrep LISTEN | fgrep :87654   # or whatever your port is

可以胜任这项工作。

然后是lsof,它也可以检测监听端口。

最后,您可以连接并发出伪请求。例如,对于 http 服务器,您可以使用 lynxcurl。对于使用非标准协议(protocol)的服务器,您可以编写一个小型客户端程序,其唯一目的是连接到服务器,看看它是否存在。

关于java - 检查 jar 是否从 shell 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20168332/

相关文章:

linux - 如何在 Linux bash shell 脚本的 curl 命令中使用变量来发送带有文件的 post 请求?

linux - "Syntax error near unexpected token ` crontab '"当尝试在一行中添加 cron 作业作为 sudo 时

bash - tail -f、awk 并输出到文件 >

java - BPXWUNIX : not found error when trying to run Regina Rexx script

linux - Grep 具有一定字符数的行,包括换行符

java - JOGL - 翻译 GL_QUADS

java - 在 Map 中实现按键或 strip 锁定 - 最佳方法?

java - Lotus Java Agent 如何自动导入 JAR 文件?

java - ShortcutInfo 和 ShortcutInfoCompat 之间的区别?

linux - JAVA_HOME 输出到变量