私はサーブレットという別のデーモンBashスクリプトを実行するようになっているBashスクリプトを書いています。
私がクエリしたい機能はgetStatus
次のとおりです。
getStatus() {
servletToCheck="$@"
if [ "$(ps -aux | grep \"$(whoami)\" | grep \"${servletToCheck}\" | grep -v \"grep\" | wc -l)" -eq 0 ]; then
echo -n "Offline"
else
echo -n "Online"
fi
}
何しなければならないこれが行うことは、引数がユーザーが所有する実行中のプロセスであることを確認し、Online
そうであれば出力し、Offline
そうでなければ出力することです。
これでこの機能が機能しているようです。完璧。問題は私のやり方にあるようです。分析するそれ:
if [ "$(getStatus ${tbnServlet})" == "Online" ]; then
outSuccess "Started servlet: ${tbnServlet}"
exit 0
else
outWarning "Failed to start servlet: ${tbnServlet}"
exit 3
fi
奇妙なことは、サーブレットが実行されていてもこのメッセージが表示されることです。Failed to start/stop servlet
サーブレットを一覧表示する機能を実行すると、オフラインではなく、すべてのサーブレットがオフラインで一覧表示されます。
問題は何であり、どのように解決できますか?
答え1
この基本的な操作ではコードが複雑すぎます。
pgrep -u $USER "$tbnServlet" >/dev/null && echo "Started servlet: $tbnServlet" || echo "Failed to start servlet: $tbnServlet"