如何验证nginx是否正在运行?

xam*_*mir 37 asp.net ubuntu mono nginx

在我的本地机器上运行ASP.NET vNext项目后,我试图找出如何在nginx上运行它,因为它看起来是一个推荐的选择

jsinh的 博客之后,我使用以下方法安装它:

sudo apt-get update
sudo apt-get install nginx -y
Run Code Online (Sandbox Code Playgroud)

我试图通过使用以下方式来了解它是否有效:

ifconfig eth0 | grep inet | awk '{ print $2}'
Run Code Online (Sandbox Code Playgroud)

跑完之后

sudo service nginx start
sudo service nginx stop
Run Code Online (Sandbox Code Playgroud)

但是,输出始终相同:

Nginx状态

如何验证nginx是否正在运行?

小智 65

查看您的要求,以下命令将有助于:

service nginx status

  • 如果"服务"不可用怎么办? (7认同)
  • 如果服务不可用,则可以使用以下命令:sudo /etc/init.d/nginx status (4认同)

ale*_*son 18

这可能与系统有关,但这是我发现的最简单的方法.

if [ -e /var/run/nginx.pid ]; then echo "nginx is running"; fi
Run Code Online (Sandbox Code Playgroud)

这是脚本编写的最佳解决方案.

  • 如果 nginx 突然死掉的话,这不会失败吗? (2认同)
  • @Mehrdad它确实如此,绝对不能保证某些东西会清理这个pid文件,所以这个“解决方案”绝对不可靠。 (2认同)

nye*_*eke 14

service nginx status将在非基于 systemd 的版本上工作。

在基于 systemd 的版本(例如 Ubuntu Linux 16.04 LTS 及更高版本)上,使用以下命令;

systemctl status nginx
Run Code Online (Sandbox Code Playgroud)


Gur*_*ngh 13

如果您使用的是 mac 机器并且已经使用安装了 nginx

brew install nginx
Run Code Online (Sandbox Code Playgroud)

然后

brew services list
Run Code Online (Sandbox Code Playgroud)

是给你的命令。这将返回通过 brew 安装的服务列表及其相应的状态。

在此处输入图片说明


Col*_*ney 12

您可以使用lsof以查看端口80上正在侦听的应用程序:

sudo lsof -i TCP:80
Run Code Online (Sandbox Code Playgroud)


Dky*_*rii 8

对于 Mac 用户

我发现了另一种方法:您可以检查是否 /usr/local/var/run/nginx.pid存在。如果是 - nginx 正在运行。脚本编写的有用方法。

例子:

if [ -f /usr/local/var/run/nginx.pid ]; then
   echo "Nginx is running"

fi
Run Code Online (Sandbox Code Playgroud)

  • 但当我遇到这个问题时,我没有发现关于Mac的相同问题。所以它对像我这样的人都有帮助。另外,这个问题已经有关于mac用户的答案了 (3认同)
  • 因为这个答案对于 bash 脚本没有用。我注意到我的答案是用于脚本编写的。 (2认同)

Sel*_*cuk 6

现代(systemctl)方法:

systemctl is-active nginx
Run Code Online (Sandbox Code Playgroud)

您可以在外壳程序脚本中使用退出值,如下所示:

systemctl -q is-active nginx && echo "It is active, do something"
Run Code Online (Sandbox Code Playgroud)