Linux--ps、lsof、netstat命令
ps------- lsof------netstat
强大,强大,都强大!总之查看进程、进程号、端口号是否存在,这三个命令都可以实现,用哪个随你
ps -ef|grep java (进程名)
ps -ef|grep 8080 (端口号)
ps -ef|grep 2556 (进程号)
lsof -i:8080(只能查端口号)
netstat -apn|grep 9090 (端口号占用查看)
在我们不清楚使用的过程中,我们总觉得他们出奇的相似,大家查进程或者端口占用各用各的命令,可迷了我们这群小白
ps命令(进程查看)
-
是LINUX下最常用的、无疑也是强大的进程查看命令。
-
该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.
-
ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
参数:
-
-A :所有的进程均显示出来,与 -e 具有同样的效用;
-
-a : 显示现行终端机下的所有进程,包括其他用户的进程;
-
-u :以用户为主的进程状态 ;
-
x :通常与 a 这个参数一起使用,可列出较完整信息。
常用命令:
ps -ef //显示所有命令,连带命令行
UID :程序被该 UID 所拥有PID :就是这个程序的 ID (一般看它)
PPID :则是其上级父程序的ID
C :CPU使用的资源百分比
STIME :系统启动时间
TTY :登入者的终端机位置
TIME :使用掉的CPU时间。
CMD :所下达的是什么指令
ps -ef |grep java //检查java 进程是否存在 (经常用的命令,grep后可以跟端口号,进程号(PID),还可以跟服务名(java))
解释: | 是管道命令 ,是指 ps命令与grep同时执行
grep是查找命令,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
至于-ef就是ps命令执行时附带的参数,加上这些参数显示的信息全面些。也可以分开用,比如ps -e |grep java 或者ps -f |grep java,执行下就可以看到结果显示的差异(还是合起来吧…)
ps aux |grep java //检查java 进程是否存在 和上面-ef那条命令效果一样,只是返回显示的参数信息更多一些,对比一下上一条可以看出
-
lsof命令(文件查看)
- 是一个列出当前系统打开文件的命令工具。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,如TC和UDP等。系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的 - 用于查看你进程打开的文件,打开文件的进程,进程使用的端口号(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为 lsof 需要访问核心内存和各种文件,所以需要root用户执行。
请大伙看份优秀且清晰的详解:losf其常见命令参数以及常见命令展示
其实我自己目前常用的:
lsof -i:9090 -i:后面只可以跟端口号-------显示所有占用9090端口的进程
lsof -p 8080 -p后面跟进程号-------显示那些文件被pid为8080的进程打开过 (一般不用,因为太多文件被使用某端口号开放的服务打开过.....例如你Java程序开放的端口访问过的文件,数不胜数)
netstat命令(端口占用查看)
- 查看系统端口使用情况
- netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作
常用命令:
netstat 查看已经连接的服务端口(ESTABLISHED)
netstat -at 查看所有的tcp服务端口(LISTEN,ESTABLISHED)
netstat -au 查看所有的udp服务端口(LISTEN,ESTABLISHED)
netstat -l 只显示监听端口
以上只我个人的浅解,大家看到错误的地方,希望能给我指正。如果有好的相关性文章,可以甩链接在评论里,一起分享,快乐学习。如果不留神真的帮到了你,那真的开心啊!