【问题标题】:shell script to automatically restart tomcat if stopped如果停止,shell脚本会自动重启tomcat
【发布时间】:2018-05-19 18:58:38
【问题描述】:

如果tomcat 服务器没有运行,我正在使用shell 脚本来启动它。我在 cronjob 中运行这个脚本来经常检查它。这是我的脚本

#! /bin/sh
SERVICE=/etc/init.d/tomcat7
STOPPED_MESSAGE="Tomcat Servlet Engine is not running."

if [ "`$SERVICE status`" -eq "$STOPPED_MESSAGE" ]; then
     $SERVICE start
fi

但是每当我运行这个脚本时,它都会给我一个错误。如果tomcat没有运行,那么错误是:

[: ILLEGAL NUMBER : * Tomcat Servlet Engine 未运行。]

如果tomcat正在运行,错误是:

[: ILLEGAL NUMBER : * Tomcat Servlet Engine 使用 pid 6130 运行。]

我认为该错误与 $SERVICE 状态有关,但我无法解决它。我是 shell 脚本的新手。请帮帮我。

在我解决此问题之前,我无法继续前进。

【问题讨论】:

    标签: linux shell tomcat cron


    【解决方案1】:

    -eq 需要 2 个整数进行比较(请参阅man test)。您应该在那里使用= 作为字符串。

    或者,您能否对脚本的输出更加宽容?

    if $SERVICE status | grep -q "not running"; then
        $SERVICE start
    fi
    

    当然最好使用monitsupervisor之类的进程监控工具。

    【讨论】: