【问题标题】:How to verify if nginx is running or not?如何验证 nginx 是否正在运行?
【发布时间】:2016-05-15 05:22:23
【问题描述】:

在我的本地计算机上running an ASP.NET vNext project 之后,我试图弄清楚如何在nginx 上运行它,因为它看起来是recommended choice

按照jsinh'sblog,我安装它使用:

sudo apt-get update
sudo apt-get install nginx -y

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

ifconfig eth0 | grep inet | awk '{ print $2}'

运行后

sudo service nginx start
sudo service nginx stop

但是,输出总是一样的:

如何验证nginx是否在运行?

【问题讨论】:

  • Nginx 与ifconfig 无关。为什么不使用service nginx status

标签: ubuntu nginx mono


【解决方案1】:

看你的需求,下面的命令应该help:

service nginx status

【讨论】:

  • 如果service 不可用怎么办?
  • 如果服务不可用,那么可以使用这个:sudo /etc/init.d/nginx status
【解决方案2】:

这可能取决于系统,但这是我找到的最简单的方法。

if [ -e /var/run/nginx.pid ]; then echo "nginx is running"; fi

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

【讨论】:

  • 如果 nginx 突然死机,这不会失败吗?
  • @Mehrdad 确实如此,绝对不能保证某些东西会清理这个 pid 文件,所以这个“解决方案”绝对不可靠。
【解决方案3】:

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

sudo lsof -i TCP:80

【讨论】:

  • sudo lsof -i 是给我的
  • @Sizzling 它是在监听不同的端口还是没有运行?
【解决方案4】:

如果你在 mac 机器上并且已经使用安装了 nginx

brew install nginx

然后

brew services list

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

【讨论】:

    【解决方案5】:

    现代 (systemctl) 的做法:

    systemctl is-active nginx
    

    您可以在 shell 脚本中使用退出值,如下所示:

    systemctl -q is-active nginx && echo "It is active, do something"
    

    【讨论】:

      【解决方案6】:

      对于 Mac 用户

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

      例子:

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

      【讨论】:

      • 问题是关于 Ubuntu,而不是 Mac 用户。
      • 但是当我遇到这个问题时,我没有发现关于 Mac 的相同问题。所以它对像我这样的任何人都有帮助。另外,这个问题已经有了关于mac用户的答案
      • 但是,既然已经有 Mac 答案,为什么还要再回答一遍呢?
      • 因为该答案对 bash 脚本没有用处。我注意到我的答案是编写脚本。
      【解决方案7】:

      service nginx status 将适用于非基于系统的版本。

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

      systemctl status nginx
      

      【讨论】:

        【解决方案8】:

        以上答案都不适合我,所以让我分享一下我的经验。我在具有端口映射 (hostPort:containerPort) - 80:80 的 docker 容器中运行 nginx 上面的答案给了我奇怪的控制台输出。即使赶上 nginx 版本,也只有好的旧 'nmap' 可以完美地工作。对我有用的命令是:

         nmap -sV localhost -p 80
        

        我们正在使用 localhost 和端口上的 -ServiceVersion 开关进行 nmap:80。它对我来说非常有用。

        【讨论】:

          【解决方案9】:

          也可以使用以下代码查看nginx状态:

             sudo /etc/init.d/nginx status
          

          【讨论】:

            【解决方案10】:

            在 windows 命令行中查看它的另一种方式:

            tasklist /fi "imagename eq nginx.exe"
            

            信息:没有符合指定条件的任务正在运行。

            如果有一个正在运行的 nginx,你会看到它们

            【讨论】:

              【解决方案11】:

              不确定您遵循的是哪个指南,但如果您查看此页面,

              https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-14-04-lts

              它使用另一个命令

              ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 
              

              并且还表明预期的结果。

              【讨论】:

              • @student 这篇文章对于 ASP.NET Core 这样的移动目标来说太旧了,而且它遗漏了很多细节。
              • 很好,至少它给了我一个起点。如果你能展示任何更新的替代品?
              猜你喜欢
              • 1970-01-01
              • 2010-09-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-07-20
              • 2015-05-29
              • 1970-01-01
              相关资源
              最近更新 更多