作者: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. mysql-5.7 innodb 的并行任务调度详解

    一.innodb并行任务调度是什么: 这里要“考古”一下了,不然问题说不清楚.上大学的时候老师和我们说最初的计算机只有一个核心,并且一次也只能做一件事, 如果你有两件事要用到计算机,在第一件事没有做完 ...

  2. centos 6.5 文件目录管理

    Linux不存在像Windows那样分盘符的概念,Linux在安装之后就以文件目录的形式来进行管理,存储.即当我们安装完系统之后,我们就会看到有一堆的目录出现在根目录下.同时Linux使用正斜杠“/” ...

  3. 页面返回刷新或H5监听(手机的)返回键

    1. pushHistory(); window.addEventListener("popstate", function(e) { alert("我监听到了浏览器的返 ...

  4. spineRunTime for cocos2dx v3 中动画播完删除animation

    spineRunTime for cocos2dx v3 中删除animation,发现下面写法会崩溃:   spine::SkeletonAnimation* animationNode = spi ...

  5. Test for Required Behavior, Not Incidental Behavior

    Test for Required Behavior, Not Incidental Behavior Kevlin Henney A COMMON PITFALL IN TESTING is to ...

  6. Effective JavaScript Item 33 让构造函数不再依赖newkeyword

    本系列作为EffectiveJavaScript的读书笔记. 在将function当做构造函数使用时,须要确保该函数是通过newkeyword进行调用的. function User(name, pa ...

  7. Python标准库:内置函数getattr(object, name[, default])

    本函数实现获取对象object的属性.属性由name来表示,就是属性名称的字符串.參数default是可选的參数,当获取对象的属性不存在时,就返回此值.假设没有提供此參数.同一时候在对象属性里也找不到 ...

  8. JNI-获取Java对象的成员变量-GeInttField()

    例: 在Java中定义一个属性,然后用C语言将其设置成另外的值,并输出出来. Java代码: Person.java package com.yuneec.demo; public class Per ...

  9. Cocos2d-x添加Android手机震动

    这个震动需要调用adnroid系统的方法,所以需要C++调用java,JNI这里就不多做介绍了,需要的可以自己去查找下相关资料,如果你只是需要实现这个功能,相信你看完本文,应该就OK了! 1.首先,修 ...

  10. centos 7 禁用笔记本触摸板设置

    安装 xorg-x11-apps 包: yum install xorg-x11-apps. 终端输入 xinput list 找到 PS/2 记录后面的ID xinput list ⎡ Virtua ...