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

来源:互联网 发布:网络配置教程 编辑:程序博客网 时间:2024/05/21 15:08

无论是为了排错还是监测或者检查电脑是否与外界未知连接的情况,都需要对当前电脑的实时网络连接情况进行了解,比如每打开一个网页,每个云服务,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.39USER     TTY      FROM              LOGIN@  IDLE WHATtoliu    console  -                Mon08   4days -toliu    s001     -                14:37       2 /usr/bin/less -istoliu    s002     -                14:37       - wtoliu    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
就好了


原创粉丝点击