作者:zhanhailiang 日期:2014-11-08

基于express写一个測试server代码例如以下,可是执行失败,报“listen EADDRINUSE”。字面上理解是error address in use,说明当前你监听的port3000已经被使用了:

[root@~/wade/wadetest]# cat index.js
var express = require('express');
var app = express();
 
app.get('/', function(req, res){
res.send('hello world');
});
 
app.listen(3000, function() {
 
});
[root@~/wade/wadetest]# node index.js
 
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1042:14)
at listen (net.js:1064:10)
at Server.listen (net.js:1138:5)
at EventEmitter.app.listen (/root/wade/wadetest/node_modules/express/lib/application.js:559:24)
at Object.<anonymous> (/root/wade/wadetest/index.js:8:5)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

尝试使用netstat查看当前机器port占用情况:

[root@~]# netstat -anop
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 5906/redis-server * off (0.00/0/0)
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 8023/memcached off (0.00/0/0)
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN 26815/redis-server off (0.00/0/0)
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2720/nginx off (0.00/0/0)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 23854/sshd off (0.00/0/0)
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 6732/node off (0.00/0/0)
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2466/php-fpm off (0.00/0/0)
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 25447/svnserve off (0.00/0/0)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 23376/mysqld off (0.00/0/0)

当中:

-n, --numeric              don't resolve names
-p, --programs display PID/Program name for sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers

由上可见。port3000被PID为6732的node进程占用。

接下来通过ps查询该进程的具体信息:

[root@~]# ps -f -p 6732
UID PID PPID C STIME TTY TIME CMD
root 6732 6703 0 Nov02 ? 00:00:00 node /root/wade/git/node-lessons/lesson1/app.js
[root@~/wade/wadetest]# ps -fp 6703
UID PID PPID C STIME TTY TIME CMD
root 6703 1 0 Nov02 ? 00:00:00 pm2: Daemon

当中:

-f full 表示输出进程完整信息,如上所看到的
-p by process ID 表示查询指定进程ID

最后。kill掉进程6703或停止pm2服务就可以正常执行上面的node演示样例:

[root@~/wade/git/node-lessons/lesson1]# pm2 kill
[PM2] Stopping PM2...
[PM2] Deleting all process
[PM2] deleteProcessId process id 0
[PM2] All processes has been stopped and deleted
[PM2] PM2 stopped
[root@~/wade/wadetest]# node index.js

例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbGZlbGxlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

【案例分析】Linux下怎样查看port占用情况的更多相关文章

  1. linux下如何查看多核负载情况【转】

    最近服务器负载超荷,CPU的单个荷使用率到了百分之八九十,内存占用超大,让给检测性能,不给源码,只给一个+ -g编译生成的执行文件,Fuck!!! 1, 在linux下载了valgrind,使用val ...

  2. windows 怎样查看port占用情况

    開始--执行--cmd 进入命令提示符 输入netstat -ano 就可以看到全部连接的PID 之后在任务管理器中找到这个PID所相应的程序假设任务管理器中没有PID这一项,能够在任务管理器中选&q ...

  3. 【转】Linux下进程/程序网络带宽占用情况查看工具 -- NetHogs

    http://www.cnblogs.com/carbon3/p/5930803.html 之前VPS侦探曾经介绍过流量带宽相关的工具如:iftop.vnstat,这几个都是统计和监控网卡流量的.但是 ...

  4. centos(linux) 下如何查看端口占用情况及杀死进程

    使用这个命令:netstat -nap [root@Jaosn sphinx]# netstat -nap Active Internet connections (servers and estab ...

  5. Linux下进程/程序网络带宽占用情况查看工具 -- NetHogs

    http://www.vpser.net/manage/nethogs.html   来自.  最后略有修改 之前VPS侦探曾经介绍过流量带宽相关的工具如:iftop.vnstat,这几个都是统计和监 ...

  6. 【linux】之查看磁盘占用情况

    查看整个硬盘使用情况: 1.df  -h 2.du -bs xx 具体目录占用情况 3.查看当前目录大于100M的文件 find . -size +100M

  7. 26. linux查看端口占用情况

    linux系统下,查看端口占用情况的命令:lsof -i[root@www ~]# lsof -i

  8. 在windows和linux下如何查看80端口占用情况?是被哪个进程占用?如何终止等

    一.在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&quo ...

  9. 在linux下,查看一个运行中的程序, 占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...

随机推荐

  1. spring中事务配置

    1 如果在方法.类.接口上使用注解的方式声明事务,需要在配置文件中进行配置,以便通知 Spring 容器对标注 @Transactional 注解的 bean 加工处理. 首先需要引入 tx 命名空间 ...

  2. 通过mysqltools全自动安装配置mysql复制环境

    一.从github下载mysqltools工具包 github地址:https://github.com/Neeky/mysqltools 二.环境规划: 主机名 ip mysql中的角色 maste ...

  3. Redis 实现队列优先级

    通常使用一个list来实现队列操作,这样有一个小限制,所以的任务统一都是先进先出,如果想优先处理某个任务就不太好处理了,这就需要让队列有优先级的概念,我们就可以优先处理高级别的任务. 实现方式: (1 ...

  4. redis 只允许指定的额内网IP访问,其余的外网IP不允许访问

    为了redis的安全,现在设定如下规则.只允许指定的服务器通过内网的方式访问.其余一律不准访问 因为redis登录额时候是不需要密码的,很不安全. 所以这里添加如下iptables规则 iptable ...

  5. Ip地址和子网掩码和CIDR无间别域间路由

    开始,网络的制定者将网络划分为A,B,C三种网络,想这个样子: A类网:  xxx.0.0.0         子网掩码:255.0.0.0 xxx.0.0.0/8 //后面的数字代表网络地址的字段 ...

  6. [k8s]elk架构设计-k8s集群里搭建

    elasticsearch和mysql的对比 https://blog.csdn.net/qq_21383435/article/details/79323383 Mapping ~ Schema m ...

  7. [sh]函数+条件表达式

    了解了下shell的函数和case语句: 函数格式: function(){ } 例子: function rsyncstart() { if [ "${status1}X" == ...

  8. JMeter学习笔记(六)-负载与监听

    1. 场景设计 场景设计的原则:忠于用户实际操作,组合用户的各种操作到场景中来. JMeter场景主要通过线程组设置来完成的,对于复杂场景还需要与逻辑控制器配合完成. 2.场景设置 JMeter线程组 ...

  9. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...

  10. 【Java】代理模式,静态代理和动态代理(基于JDK或CGLib)

    当我们需要在一个方法之前或之后添加一段逻辑时,自然会想到使用代理类.代理类帮我们代理了实际类的调用,然后可以在实际调用之前和之后添加一些逻辑,从而不浸入实际类. 拓展:由于代理类能在实际类调用之前和之 ...