是否可以检查Ngnix的运行状态并根据状态返回1或0?

时间:2018-11-29 14:44:29

标签: linux bash nginx scripting

我有一个命令来检查端口是否打开并返回零或一。

netstat -ano | grep ':443\s' | if grep -q LISTEN; then echo 0; else echo 1; fi

我想知道我们如何编写命令来检查nginx是否正在运行并返回1或0?

4 个答案:

答案 0 :(得分:1)

pidof nginx && echo 1 || echo 0

答案 1 :(得分:1)

您可以使用系统软件包随附的pidof工具(例如RedHat GNU / Linux发行版下的procps-ng),重定向不需要的输出并设法提供所需的状态。

为了实现可持续性,我为您编写了一个可以集成到您的小脚本中:

#!/bin/bash

function isRunning() {
  local _processName="$1"
  pidof "$_processName" >/dev/null
}

isRunning nginx && echo "It is running" || echo "Not running"

如果您确实想回显1或0,可以,但是通常没有用。

相反,您可以根据此函数isRunning的返回采取行动。

根据您的评论进行编辑:您可以将其用于任何过程:

#!/bin/bash

function isRunning() {
  local _processName="$1"
  echo -ne "Checking if $_processName is running ... " 
  pidof "$_processName" >/dev/null && echo "1" || echo "0"
}

isRunning nginx
isRunning java
isRunning httpd

如果您不希望除0/1以外的任何内容,可以在函数中删除回显。

答案 2 :(得分:0)

使用systemd,您可以使用“ systemctl status nginx”,然后查看“ $?”。变量(最后执行的命令的退出代码)。

我认为类似的事情会做得到:

systemctl status nginx >/dev/null 2>&1; if [ $? -gt 0 ]; then echo 0; else echo 1; fi

答案 3 :(得分:-1)

因为Nginx作为服务运行,所以最好的方法实际上是使用systemd。您甚至可以稍后根据系统退出代码来解释正在运行功能的状态。

function running() { 
   [[ ! -z $1 ]] &&   systemctl status $1 2>&1 >/dev/null  || return 255; 
   return $?; 
}

running nginx && echo "Its running" || echo "Its not"