java– 如何在shell变量中捕获系统调用的结果?

java– 如何在shell变量中捕获系统调用的结果?,第1张

概述我们想要构建一个每晚运行的脚本(杀死并重启java进程).为此,我们需要捕获进程号(因为可能有多个java进程在运行).下面的命令基本上是我们用来获取进程号的命令,可能是在grep末尾有一个正则表达式.除非有更好的建议.root#ps -e |grep 'java' 18179 pts/0 00:00:43 java 我们想知道如何解析上面的输出并将

我们想要构建一个每晚运行的脚本(杀死并重启java进程).为此,我们需要捕获进程号(因为可能有多个java进程在运行).下面的命令基本上是我们用来获取进程号的命令,可能是在grep末尾有一个正则表达式.除非有更好的建议.

root#ps -e |grep  'java'18179 pts/0    00:00:43 java

我们想知道如何解析上面的输出并将其转换为shell变量,因此我们可以使用kill命令,如下所示.

kill -9 ${processID}wait 10

注1:我们不能依赖正常服务停止命令的原因是因为进程有时不想死.我们必须手动使用kill命令.最佳答案有几种方法可以解决这个问题.如果你正在使用bash,那么shell变量’$!’将包含最后一个分叉子进程的PID.因此,在启动Java程序之后,执行以下 *** 作:

echo $! > /var/run/my-process.pID

然后,在init脚本停止Java进程之后:

# Get the pIDfile.pID=$(cat /var/run/my-process.pID)# Wait ten seconds to stop our process.for count in $(1 2 3 4 5 6 7 8 9 10); do    sleep 1    cat "/proc/$pID/cmdline" 2>/dev/null | grep -q java    test $? -ne 0 && pID="" && breakdone# If we haven't stopped,kill the process.if [ ! -z "$pID" ]; then    echo "Not stopPing; terminating with extreme prejudice."    kill -9 $pIDfi

确保在完成后删除pID文件. 总结

以上是内存溢出为你收集整理的java – 如何在shell变量中捕获系统调用的结果?全部内容,希望文章能够帮你解决java – 如何在shell变量中捕获系统调用的结果?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1046855.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存