现在的位置: 首页 > 综合 > 正文

OSX: 查看系统/用户/网络信息的实践

2013年09月16日 ⁄ 综合 ⁄ 共 1348字 ⁄ 字号 评论关闭

无论是为了排错还是监测或者检查电脑是否与外界未知连接的情况,都需要对当前电脑的实时网络连接情况进行了解,比如每打开一个网页,每个云服务,App Store等,如果有可疑的目标,就要检查一下是哪个程序引起的,下面只是列出一些常用命令和初步的解释,提供一个简单的思路:

查找当前系统中打开并建立连接的网络信息

netstat -aW | grep -i -e "ESTABLISHED"

如果只想看没有被转换语意的数字信息,加上-n这个参数, 如

netstat -anW | grep -i -e "ESTABLISHED"

要想查找某个端口名称对应的端口号

grep https /etc/services 

或者到IANA的官方网站去查找,里面有详细解释和最新更新:Service
Name and Transport Protocol Port Number Registry

查看了每个连接后,可以用下面命令来查看哪个程序占用了某个端口。比如要查找端口4001

sudo lsof -i:4001

为了找到某个程序所有的情况,上面的命令中显示了该程序进程的pid,使用命令:

sudo lsof -p <pid> 

这个命令相当于Activity Monitor中的Inspect功能。

uptime来查看当前系统运行的时长,我的系统显示,4天没有关机,同时有5个用户连接,在过去的1/5/15分钟里系统资源的使用情况。

15:20  up 4 days,  6:47, 5 users, load averages: 0.70 0.52 0.45

users命令告诉你当前登陆系统的所有用户:

blnestor toliu

现在我知道,不仅有我登陆,还有另外一个人blnestor.

使用命令w来看当前登陆的用户

比如我的是:

15:14  up 4 days,  6:41, 4 users, load averages: 0.41 0.38 0.39
USER     TTY      FROM              LOGIN@  IDLE WHAT
toliu    console  -                Mon08   4days -
toliu    s001     -                14:37       2 /usr/bin/less -is
toliu    s002     -                14:37       - w
toliu    s000     -                14:37      36 -bash
blnestor   s003     10.37.16.104     15:17       - bash

因为我开了3个terminal窗口,分别对应s000, s001, s002, 同时又有一个用户blnestor从远程机器10.37.16.104连接过来。</p>

使用命令who也可以得到类似的信息,为了确定当前terminal的TTY名,用命令who am I;上次系统启动时间who -b

使用上面的知识,判断远程用户使用的什么连接:

$ netstat -aW | grep -i -e "ESTABLISHED" | grep "10.37.16.104"
tcp4       0      0  10.37.5.245.ssh        10.37.16.104.58784     ESTABLISHED

可以看出是ssh

使用kill来停止连接

先来找到该ssh连接的PID,比如:

$ ps -lt ttys003
  UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
  502 26922 26921     4006   0  31  0  2433436   1192 -      Ss+                 0 ttys003    0:00.01 -bash

那么

sudo kill -9 26922

就好了

抱歉!评论已关闭.