zoukankan      html  css  js  c++  java
  • linux下查看端口占用情况以及服务启动的目录

    1.先介绍几个命令:

    1. lsof -i:80

      查看80端口的占用情况

      命令返回结果:

        COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
        nginx 46678 xiaoju 7u IPv4 3292095214 0t0 TCP *:http (LISTEN)

    2. netstat -lpn | grep 80

      查看80端口服务端socket占用状况

      netstat命令介绍见http://man.linuxde.net/netstat,其中注意有-a的时候-l过滤是无效的,所以要加-l就去掉-a。

      命令返回结果:

        tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      46678/nginx: worker

    3. ll /proc/46778

      查看PID为46778的进程服务运行命令的目录和命令等信息

      命令介绍见:https://www.douban.com/note/409387658/

     4. pdwx  46778

    查看PID=46778的进程的工作目录.

    2. 常见case:

    case1: 一台机器上启动了好多个shop服务,如下,想知道每个服务分别占用什么端口

    1
    2
    3
    4
    5
    [xiaoju@rico-public order]$ ps -ef |grep shop
    xiaoju   15061     1  3 Jun12 ?        07:49:08 ./bin/shop -config=./conf/service.conf.dev.liantiao
    xiaoju   17279     1  3 17:54 ?        00:11:43 ./bin/shop -config=./conf/service.conf.dev
    xiaoju   19776     1  4 Jun15 ?        06:56:42 /home/xiaoju/shop/output/bin/shop -config=/home/xiaoju/shop/output/conf/service.conf
    xiaoju   37919     1  2 Jun15 ?        03:14:06 ./bin/shop -config=/home/xiaoju/shop_8407/output/conf/service.conf.dev.8407

    解决办法: 

    1
    2
    3
    4
    5
    6
    7
    [xiaoju@rico-public order]$ netstat -npl | grep shop
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp        0      0 0.0.0.0:8420            0.0.0.0:*               LISTEN      17279/./bin/shop
    tcp        0      0 0.0.0.0:8401            0.0.0.0:*               LISTEN      19776/shop
    tcp        0      0 0.0.0.0:8402            0.0.0.0:*               LISTEN      15061/./bin/shop
    tcp        0      0 0.0.0.0:8407            0.0.0.0:*               LISTEN      37919/./bin/shop

     这样就知道每个shop服务占用的是哪个端口(netstat最后一列是pid,pid与ps -ef出来的pid一一对应)

    1
    2
    3
    [xiaoju@rico-public order]$ ll /proc/17279
    lrwxrwxrwx  1 xiaoju xiaoju 0 Jun 21 22:56 cwd -> /home/xiaoju/shop/output           // 运行路径
    lrwxrwxrwx  1 xiaoju xiaoju 0 Jun 21 22:53 exe -> /home/xiaoju/shop/output/bin/shop  // 可执行文件<br>-r--r--r--  1 xiaoju xiaoju 0 Jun 21 23:19 cmdline                     // 运行的命令,这个很重要<br>-r--------  1 xiaoju xiaoju 0 Jun 21 23:18 environ                     // 运行时的环境变量<br>

     这个命令返回很多信息,这里只列了命令运行的路径和可执行文件路径。

    case2:我想启动一个服务,服务需要占用8420端口,不知道这个端口有没有被占用,如占用是被什么程序占用

    解决办法:

    1
    2
    3
    [xiaoju@rico-public order]$ lsof -i:8420
    COMMAND   PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
    shop    17279 xiaoju   10u  IPv4 3919976561      0t0  TCP *:8420 (LISTEN)

     如果这条命令没有返回任何结果那么表明端口没被占用,如果返回信息,那么我们就可以看到PID

    1
    2
    3
    [xiaoju@rico-public order]$ ll /proc/17279
    lrwxrwxrwx  1 xiaoju xiaoju 0 Jun 21 22:56 cwd -> /home/xiaoju/shop/output
    lrwxrwxrwx  1 xiaoju xiaoju 0 Jun 21 22:53 exe -> /home/xiaoju/shop/output/bin/shop<br>-r--r--r--  1 xiaoju xiaoju 0 Jun 21 23:19 cmdline

     然后根据PID查到是被什么程序占用。

  • 相关阅读:
    DevC++手动开栈
    二分图|网络流建模复习
    C++常用数据类型范围
    卡常剪贴板
    AcWing 2425. 奇怪的计算器
    AcWing 153. 双栈排序 震惊 !2^n 过 1000
    AcWing 352. 闇の連鎖
    AcWing 246. 区间最大公约数
    AcWing 221. 龙哥的问题
    AcWing 381. 有线电视网络
  • 原文地址:https://www.cnblogs.com/keystone/p/12516552.html
Copyright © 2011-2022 走看看