【问题标题】:Ubuntu Server init.d - testing if value is greater than 1Ubuntu Server init.d - 测试值是否大于 1
【发布时间】:2011-08-16 06:19:15
【问题描述】:

我正在编写一个 init.d 脚本并希望测试返回值是否大于 1。“大于”的正确语法是什么?

mc_status() {
        if ps ax | grep -ci 'CanaryMod.jar' > 0
        then
                echo "$SERVICE is running."
        else
                echo "$SERVICE is not running."
        fi
}

【问题讨论】:

    标签: ubuntu conditional-operator init.d minecraft


    【解决方案1】:

    据我回忆,init 脚本是用 sh shell 编写的。许多 shell 脚本使用 pid 文件(通常在 /var/run 中找到)来检查服务是否正在运行。在您的情况下,使用 ps 中的流程进行验证。

    您正在执行的测试有些不正确,因为 ps/grep 返回的不是数字而是一组字符或什么也没有。请尝试以下操作:

    mc_status() {
            if [ ! -z "`ps ax | grep -ci 'CanaryMod.jar'`" ]; then
                    echo "$SERVICE is running."
            else
                    echo "$SERVICE is not running."
            fi
    }
    

    【讨论】:

    • 谢谢 sosc,根据您的建议,我最终使用了以下内容。 mc_status() { if [ "ps ax | grep -ci 'CanaryMod.jar'" -gt 1 ] 那么 echo "$SERVICE 正在运行。" else echo "$SERVICE 没有运行。" }
    • 我的错误我错过了 grep 的“-c”参数...不要忘记命令周围的抽动
    猜你喜欢
    • 2021-11-25
    • 1970-01-01
    • 2010-12-26
    • 2017-02-28
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多