【问题标题】:Linux bash check process running [duplicate]Linux bash检查进程正在运行[重复]
【发布时间】:2018-03-26 08:08:15
【问题描述】:

我不是 Linux bash shell 专家,我只是想检查一下我的 java 进程是否仍在运行。 我编写了这个简单的 bash shell 脚本来验证我的 java 进程是否仍在执行...但输出始终是 'Java is done...'

#!/bin/bash

until [ ` pgrep java ` ]; do
    echo Java still running...
    sleep 1
done
echo Java is done...

我想问一下我的 until 语句有什么问题。

【问题讨论】:

  • 不应该是while 而不是until
  • 我需要将它添加到 Kubernetes 初始化容器中......所以我正在考虑使用 until 命令。

标签: linux bash


【解决方案1】:

until 的情况下,循环执行直到测试命令成功执行。只要此命令失败,循环就会继续。
在第一次迭代中,当 java 运行时,pgrep java 为真,循环体不被执行。

【讨论】:

    【解决方案2】:

    如果你想使用until,你应该改变条件

    until [ -z ` pgrep java ` ]; do
    

    【讨论】:

    • 对不起,我在这里弄糊涂了,但它可以工作......哦,所以 -z 测试 pgrep 命令是否返回空字符串?因此,如果 java 不再运行,它会返回一个空字符串..这是否正确?
    • @MarkEstrada 是的,你是对的
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2011-02-23
    • 2014-07-28
    • 2015-06-10
    • 2012-10-30
    • 1970-01-01
    • 2013-04-22
    • 2018-01-15
    相关资源
    最近更新 更多