ps -aux | grep tomcat
netstat –apn netstat –apn | grep 8080
lsof(list open files)是一个列出当前系统打开文件的工具。 在Linux中任何事物都是以文件的形式存在,包括网络和硬件连接。TCP和UDP套接字,系统都在后台为其分配了一个文件描述符,为应用程序和操作系统之间的交互提供了通用的接口。
在终端中输入lsof命令即可查看当前打开的文件,由于需要访问核心内存和文件,所以需要root身份才能调用。
COMMANDPIDUSERFDTYPEDEVICESIZENODENAME进程的名称进程标识符进程所有者文件描述符文件类型指定磁盘的名称文件的大小索引节点打开文件的确切名称init1rootcwdDIR3,310242/init1rootrtdDIR3,310242/init1roottxtREG3,3384321763452/sbin/initinit1rootmemREG3,31061141091620/lib/libdl-2.6.soinit1rootmemREG3,375606961091614/lib/libc-2.6.soinit1rootmemREG3,3794601091669/lib/libselinux.so.1init1rootmemREG3,32232801091668/lib/libsepol.so.1init1rootmemREG3,35641361091607/lib/ld-2.6.soinit1root10uFIFO0,151309/dev/initctltype, 文件和目录分别称为REG和DIR,而CHR 和 BLK,分别表示字符和块设备;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。
lsof常见的用处是程序打开的文件的名称和数目。可以查找出某个特定的应用程序将日志数据记录到了何处,或者正在跟踪某个问题。
lsof filename //显示打开文件的所有进程 lsof -i //显示所有打开的端口 lsof -i :22 //查看端口运行的情况,注意格式 lsof -i @192.168.1.111 //查看远程已打开的网络连接(连接到192.168.1.111) lsof -i UDP@[url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接 lsof -a -u root -d txt //查看root用户进程打开的txt类型的文件 lsof -c sendmail //查看sendmail进程的文件使用情况,-c显示进程打开的文件 lsof /dev/cdrom //那个进程在占用光驱 lsof /mydata/ //找出那些进程在使用当前文件系统,若有使用,可能不能正常卸载文件系统恢复被删除的文件 当进程打开某个文件时,即使这个文件被删除了,它依然存在于磁盘中,该进程并不知道这个文件已经被删除了,它仍然可以向打开文件时提供给她的描述符的位置读写文件。但是除了这个进程之外,其他的进程是看不到这个文件的,因为已经删除了相应的目录索引节点。
/proc目录下,其中包含了反应内核和进程树的各种文件。/proc目录中挂载的是在内存中所映射的区域,我们对这些文件进行读写,实际上是从内存中获取相关信息。大多数与lsof相关的信息都存储在以进程的PID命名的目录中,即/proc/1234,包含的是PID为1234的进程的信息。
当系统中的某个文件被意外删除了,只要还有进程正在访问该文件,我们就可以使用lsof从/proc目录将该文件恢复。 比如错误的将/var/log/messages文件删掉了 losf | grep /var/log/messages //查看当前是否有进程使用该文件 syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted) 可以看到PID 1283(syslogd)打开了该文件,文件描述符为2,最后的deleted表示这个文件已经被标记删除了。 此时,我们可以在/proc/1283/fd/2下找到该文件,fd下面的每个以数字命名的文件表示进程对应的文件描述符。 cat /proc/1283/fd/2 > /var/log/messages
可以显示路由表、实际的网络连接和网络接口,总之是查看有哪些网络在运作。
netstat -an | grep LISTEN //只显示正在监听的,n表示显示ip代替名称,0.0.0.0的就是每个IP都有的服务,写明哪个IP的就是绑定那个IP的服务。 netstat -tln //用来查看linux的端口使用情况 netstat -ap //查看所有的服务端口并显示对应的服务程序名windows中是
netstat -ano netstat -aon|findstr "49157" //筛选端口,可以找到PID tasklist|findstr "2720" //根据PID可以找到进程名