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/

2. 常见case:

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

[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

解决办法: 

[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一一对应)

[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 // 可执行文件
-r--r--r--  1 xiaoju xiaoju 0 Jun 21 23:19 cmdline                     // 运行的命令,这个很重要
-r--------  1 xiaoju xiaoju 0 Jun 21 23:18 environ                     // 运行时的环境变量

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

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

解决办法:

[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

[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
-r--r--r--  1 xiaoju xiaoju 0 Jun 21 23:19 cmdline

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

linux下查看端口占用情况以及服务启动的目录的更多相关文章

  1. Linux下查看端口占用情况

    用启动服务的账号登录,然后运行命令: lsof -i:<端口号> 也可使用命令: netstat -apn|grep <端口号> 找到进程号以后,再使用以下命令查看详细信息: ...

  2. Linux下查看端口占用进程号,程序名的方法

    Linux下查看端口占用进程号,程序名的方法,方便我们查找什么进程导致系统变慢等需要.linux下查看端口占用情况: 1. 查看哪个进程占用了819端口: case9-sghfofo:/usr/loc ...

  3. Mac下查看端口占用情况

    为什么 后端开发时,有时会碰到服务无法正常启动,端口被占用.这时需要查看端口占用情况. 是什么 需要用到一些Linux命令. 怎么做 查看占用端口51805的进程 lsof -n -P -i TCP ...

  4. windows 下查看端口占用情况

    windows下面查看端口占用情况: netstat -ano|findstr "8888" TCP 127.0.0.1:8888 0.0.0.0:0 LISTENING 6876 ...

  5. 【运维】linux命令查看端口占用情况,杀死进程,后台启动进程

    1.查看端口占用情况:> lsof -i:port COMMAND    PID    USER    FD    TYPE   DEVICE    SIZE/OFF    NODE  NAME ...

  6. 【linux】查看端口占用情况

    netstat -nlp | grep "端口号"

  7. centos下查看端口占用情况,杀死进程

    第一种:我们知道端口号用下面这种方法 有时候我们知道某个服务端口正在后台运行,想关掉它.比如说我tomcat是8080端口,在后台运行.怎么关掉它呢? 根据端口查看这个进程的pid netstat - ...

  8. Linux如何查看端口占用情况

    Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER ...

  9. windows下查看端口占用情况及关闭相应的进程

    经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法. 例如:需要查看9001端口被谁占用,并将其进程强制关闭 在 ...

随机推荐

  1. Cannot read property 'resetFields' of undefined 问题及引申

    问题描述: 使用element开发我的后台系统,编辑和新增使用了同一个弹出框<el-dialog><el-form></el-form></el-dialog ...

  2. Ant Design 使用小结

    最近公司做了一个系统,因为页面涉及的表单交互非常多,如果使用之前的 Node + Express 的开发模式效率是非常低的,因此经过考虑,最后决定使用 Node + React 的开发模式,并且使用了 ...

  3. java迭代map

    java迭代map: import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.ut ...

  4. Java并发(5)- ReentrantLock与AQS

    引言 在synchronized未优化之前,我们在编码中使用最多的同步工具类应该是ReentrantLock类,ReentrantLock拥有优化后synchronized关键字的性能,又提供了更多的 ...

  5. bzoj 2152 点剖分

    比较裸的点剖分,访问到每个重心时,记录一个b数组, 代表当前子树中长度为i的边的数量是b[i],因为是3的倍数, 所以边长mod 3保存就行了,然后记录一个sum数组,代表 当前子树中一个子节点为根的 ...

  6. 怎么重启shell ubuntu

    sunosfind . -type f  | xargs grep count 怎么重启shell ubuntu方法一:退出,重新登录方法二:source /etc/profile

  7. Quorum一致性协议

    Quorum一致性协议 一个分布式数据库系统中通常是一系列密切关联的操作组成完整的系统. 分布式系统最基本的要保证一致性, 分区性通常是无法避免的, 在这种情况下尽力通过软件协议做到最大可用性. 根据 ...

  8. P2654 原核生物培养

    P2654 原核生物培养 题目描述 W教授最近正在研究一种原核生物,这种生物的生长方式很奇特,只能通过吃掉同类而生长.两个该种生物相遇,较大质量的会把较小的吃掉(相同的话就看RP了),吃掉后较大的生物 ...

  9. django 分页django-pure-pagination(zz)

    虽然django自带了一个paginator,但不是很方便,我们使用django-pure-pagination github地址https://github.com/jamespacileo/dja ...

  10. C# 对话框使用大全

    对话框中我们常用了以下几种:1.文件对话框(FileDialog) 它又常用到两个: 打开文件对话框(OpenFileDialog) 保存文件对话(SaveFileDialog)2.字体对话框(Fon ...