我有一个命令来检查端口是否打开并返回零或一。
netstat -ano | grep ':443\s' | if grep -q LISTEN; then echo 0; else echo 1; fi
我想知道我们如何编写命令来检查nginx是否正在运行并返回1或0?
答案 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"