Linux-(lsof,ifconfig,route)

lsof命令

1.命令格式:

lsof [参数][文件]mysql

2.命令功能:

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,经过文件不只仅能够访问常规数据,还能够访问网络链接和硬件。因此如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,不管这个文件的本质如何,该文件描述符为应用程序与基础操做系统之间的交互提供了通用接口。由于应用程序打开文件的描述符列表提供了大量关于这个应用程序自己的信息,所以经过lsof工具可以查看这个列表对系统监测以及排错将是颇有帮助的。linux

用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,由于 lsof 须要访问核心内存和各类文件,因此须要root用户执行。sql

lsof打开的文件能够是:apache

  • 普通文件
  • 目录
  • 网络文件系统的文件
  • 字符或设备文件
  • (函数)共享库
  • 管道,命名管道
  • 符号连接
  • 网络文件(例如:NFS file、网络socket,unix域名socket)
  • 还有其它类型的文件,等等

3.命令参数:

-a 列出打开文件存在的进程windows

-c<进程名> 列出指定进程所打开的文件浏览器

-g  列出GID号进程详情缓存

-d<文件号> 列出占用该文件号的进程bash

+d<目录>  列出目录下被打开的文件服务器

+D<目录>  递归列出目录下被打开的文件网络

-n<目录>  列出使用NFS的文件

-i<条件>  列出符合条件的进程。(四、六、协议、:端口、 @ip )

-p<进程号> 列出指定进程号所打开的文件

-u  列出UID号进程详情

-h 显示帮助信息

-v 显示版本信息

4.使用实例:

无任何参数

命令:lsof

COMMAND     PID USER   FD      TYPE             DEVICE     SIZE       NODE NAME
init          1 root  cwd       DIR                8,2     4096          2 /
init          1 root  rtd       DIR                8,2     4096          2 /

lsof输出各列信息的意义以下:

COMMAND:进程的名称

PID:进程标识符

PPID:父进程标识符(须要指定-R参数)

USER:进程全部者

PGID:进程所属组

FD:文件描述符,应用程序经过文件描述符识别该文件。如cwd、txt等

(1)cwd:表示current work dirctory,即:应用程序的当前工做目录,这是该应用程序启动的目录,除非它自己对这个目录进行更改

(2)txt :该类型的文件是程序代码,如应用程序二进制文件自己或共享库,如上列表中显示的 /sbin/init 程序

(3)lnn:library references (AIX);

(4)er:FD information error (see NAME column);

(5)jld:jail directory (FreeBSD);

(6)ltx:shared library text (code and data);

(7)mxx :hex memory-mapped type number xx.

(8)m86:DOS Merge mapped file;

(9)mem:memory-mapped file;

(10)mmap:memory-mapped device;

(11)pd:parent directory;

(12)rtd:root directory;

(13)tr:kernel trace file (OpenBSD);

(14)v86  VP/ix mapped file;

(15)0:表示标准输出

(16)1:表示标准输入

(17)2:表示标准错误

通常在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等

(1)u:表示该文件被打开并处于读取/写入模式

(2)r:表示该文件被打开并处于只读模式

(3)w:表示该文件被打开并处于

(4)空格:表示该文件的状态模式为unknow,且没有锁定

(5)-:表示该文件的状态模式为unknow,且被锁定

同时在文件状态模式后面,还跟着相关的锁

(1)N:for a Solaris NFS lock of unknown type;

(2)r:for read lock on part of the file;

(3)R:for a read lock on the entire file;

(4)w:for a write lock on part of the file;(文件的部分写锁)

(5)W:for a write lock on the entire file;(整个文件的写锁)

(6)u:for a read and write lock of any length;

(7)U:for a lock of unknown type;

(8)x:for an SCO OpenServer Xenix lock on part      of the file;

(9)X:for an SCO OpenServer Xenix lock on the      entire file;

(10)space:if there is no lock.

TYPE:文件类型,如DIR、REG等,常见的文件类型

(1)DIR:表示目录

(2)CHR:表示字符类型

(3)BLK:块设备类型

(4)UNIX: UNIX 域套接字

(5)FIFO:先进先出 (FIFO) 队列

(6)IPv4:网际协议 (IP) 套接字

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

查看谁正在使用某个文件,也就是说查找某个文件相关的进程

命令:lsof /bin/bash

递归查看某个目录的文件信息

命令:lsof test/test3

[root@localhost ~]# cd /opt/soft/
[root@localhost soft]# lsof test/test3
COMMAND   PID USER   FD   TYPE DEVICE SIZE    NODE NAME
bash    24941 root  cwd    DIR    8,2 4096 2258872 test/test3
vi      24976 root  cwd    DIR    8,2 4096 2258872 test/test3

不使用+D选项,遍历查看某个目录的全部文件信息的方法

命令:lsof |grep 'test/test3'

列出某个用户打开的文件信息

命令:lsof -u username

列出某个程序进程所打开的文件信息

命令:lsof -c mysql

说明: -c 选项将会列出全部以mysql这个进程开头的程序的文件,其实你也能够写成 lsof | grep mysql, 可是第一种方法明显比第二种方法要少打几个字符了

列出多个进程多个打开的文件信息

命令:lsof -c mysql -c apache

列出某个用户以及某个进程所打开的文件信息

命令:lsof  -u test -c mysql 

列出除了某个用户外的被打开的文件信息

命令:lsof -u ^root

说明:^这个符号在用户名以前,将会把是root用户打开的进程不让显示

经过某个进程号显示该进行打开的文件

命令:lsof -p 1

列出多个进程号对应的文件信息

命令:lsof -p 1,2,3

列出除了某个进程号,其余进程号所打开的文件信息

命令:lsof -p ^1

列出全部的网络链接

命令:lsof -i

列出全部tcp 网络链接信息

命令:lsof -i tcp

列出全部udp网络链接信息

命令:lsof -i udp

列出谁在使用某个端口

命令:lsof -i :3306

列出谁在使用某个特定的udp端口

命令:lsof -i udp:55

特定的tcp端口

命令:lsof -i tcp:80

列出某个用户的全部活跃的网络端口

命令:lsof -a -u test -i

列出全部网络文件系统

命令:lsof -N

域名socket文件

命令:lsof -u

某个用户组所打开的文件信息

命令:lsof -g 5555

根据文件描述列出对应的文件信息

命令:lsof -d description(like 2)

例如:lsof  -d  txt

例如:lsof  -d  1

例如:lsof  -d  2

说明:0表示标准输入,1表示标准输出,2表示标准错误,从而可知:因此大多数应用程序所打开的文件的 FD 都是从 3 开始

根据文件描述范围列出文件信息

命令:lsof -d 2-3

列出COMMAND列中包含字符串" sshd",且文件描符的类型为txt的文件信息

命令:lsof -c sshd -a -d txt

列出被进程号为1234的进程所打开的全部IPV4 network files 

命令:lsof -i 4 -a -p 1234 

列出目前链接主机peida.linux上端口为:20,21,22,25,53,80相关的全部文件信息,且每隔3秒不断的执行lsof指令

命令:lsof -i @peida.linux:20,21,22,25,53,80  -r  3

ifconfig命令 

1.命令格式:

ifconfig  [网络设备]  [参数]

2.命令功能:

许多windows很是熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个相似的工具,就是ifconfig(interfaces config)。一般须要以root身份登陆或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不只能够被用来简单地获取网络接口配置信息,还能够修改这些配置。ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可经过此命令对网络进行相应的配置。

3.命令参数:

up 启动指定网络设备/网卡。

down 关闭指定网络设备/网卡。该参数能够有效地阻止经过指定接口的IP信息流,若是想永久地关闭一个接口,咱们还须要从核心路由表中将该接口的路由信息所有删除。

arp 设置指定网卡是否支持ARP协议。

-promisc 设置是否支持网卡的promiscuous模式,若是选择此参数,网卡将接收网络中发给它全部的数据包

-allmulti 设置是否支持多播模式,若是选择此参数,网卡将接收网络中全部的多播数据包

-a 显示所有接口信息

-s 显示摘要信息(相似于 netstat -i)

add 给指定网卡配置IPv6地址

del 删除指定网卡的IPv6地址

<硬件地址> 配置网卡最大的传输单元

mtu<字节数> 设置网卡的最大传输单元 (bytes)

netmask<子网掩码> 设置网卡的子网掩码。掩码能够是有前缀0x的32位十六进制数,也能够是用点分开的4个十进制数。若是不打算将网络分红子网,能够无论这一选项;若是要使用子网,那么请记住,网络中每个系统必须有相同子网掩码。

tunel 创建隧道

dstaddr 设定一个远端地址,创建点对点通讯

-broadcast<地址> 为指定网卡设置广播协议

-pointtopoint<地址> 为网卡设置点对点通信协议

multicast 为网卡设置组播标志

address 为网卡设置IPv4地址

txqueuelen<长度> 为网卡设置传输列队的长度

4.使用实例:

显示网络设备信息(激活状态的)

命令:ifconfig

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:56:BF:26:20  
          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:596390239 (568.7 MiB)  TX bytes:2886956 (2.7 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:68 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2856 (2.7 KiB)  TX bytes:2856 (2.7 KiB)

eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,能够看到目前这个网卡的物理地址(MAC地址)是 00:50:56:BF:26:20

inet addr 用来表示网卡的IP地址,此网卡的 IP地址是 192.168.120.204,广播地址, Bcast:192.168.120.255,掩码地址Mask:255.255.255.0 

lo 是表示主机的回坏地址,这个通常是用来测试一个网络程序,但又不想让局域网或外网的用户可以查看,只能在此台主机上运行和查看所用的网络接口。好比把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看获得,局域网的其它主机或用户无从知道。

第一行:链接类型:Ethernet(以太网)HWaddr(硬件mac地址)

第二行:网卡的IP地址、子网、掩码

第三行:UP(表明网卡开启状态)RUNNING(表明网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节

第4、五行:接收、发送数据包状况统计

第七行:接收、发送数据字节数统计信息。

启动关闭指定网卡

命令:ifconfig eth0 up/down

说明:ifconfig eth0 up 为启动网卡eth0 ;ifconfig eth0 down 为关闭网卡eth0。ssh登录linux服务器操做要当心,关闭了就不能开启了,除非你有多网卡。

为网卡配置和删除IPv6地址

命令:ifconfig eth0 add/del 33ffe:3240:800:1005::2/64

说明:练习的时候,ssh登录linux服务器操做要当心,关闭了就不能开启了,除非你有多网卡。

用ifconfig修改MAC地址

命令:ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

[root@localhost ~]# ifconfig eth0 down //关闭网卡
[root@localhost ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
[root@localhost ~]# ifconfig eth0 up //启动网卡

配置IP地址

命令:

ifconfig eth0 192.168.120.56 
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255

启用和关闭ARP协议

命令:

ifconfig eth0 arp 开启网卡eth0 的arp协议;

ifconfig eth0 -arp 关闭网卡eth0 的arp协议;

设置最大传输单元

命令:ifconfig eth0 mtu 1500

说明:设置能经过的最大数据包大小为 1500 bytes

备注:用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

route命令 

1.命令格式:

route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]] 

2.命令功能:

Route命令是用于操做基于内核ip路由表,它的主要做用是建立一个静态路由让指定一个主机或者一个网络经过一个网络接口,如eth0。当使用"add"或者"del"参数时,路由表被修改,若是没有参数,则显示路由表当前的内容。

Linux系统的route命令用于显示和操做IP路由表(show / manipulate the IP routing table)。要实现两个不一样的子网之间的通讯,须要一台链接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由一般是为了解决如下问题:该Linux系统在一个局域网中,局域网中有一个网关,可以让机器访问Internet,那么就须要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启以后,该路由就失效了;能够在/etc/rc.local中添加route命令来保证该路由设置永久有效。

3.命令参数:

-c 显示更多信息

-n 不解析名字

-v 显示详细的处理信息

-F 显示发送信息

-C 显示路由缓存

-f 清除全部网关入口的路由表。 

-p 与 add 命令一块儿使用时使路由具备永久性。

add:添加一条新路由。

del:删除一条路由。

-net:目标地址是一个网络。

-host:目标地址是一个主机。

netmask:当添加一个网络路由时,须要使用网络掩码。

gw:路由数据包经过网关。注意,你指定的网关必须可以达到。

metric:设置路由跳数。

Command 指定您想运行的命令 (Add/Change/Delete/Print)。 

Destination 指定该路由的网络目标。 

mask Netmask 指定与网络目标相关的网络掩码(也被称做子网掩码)。 

Gateway 指定网络目标定义的地址集和子网掩码能够到达的前进或下一跃点 IP 地址。 

metric Metric 为路由指定一个整数成本值标(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可使用。 

if Interface 为能够访问目标的接口指定接口索引。若要得到一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可使用十进制或十六进制值进行接口索引。

4.使用实例:

显示当前路由

命令:route -n

[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.120.0   *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0
10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0
default 192.168.120.240 0.0.0.0         UG    0      0        0 eth0
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.120.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0
10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0
0.0.0.0         192.168.120.240 0.0.0.0         UG    0      0        0 eth0

说明:

第一行表示主机所在网络的地址为192.168.120.0,若数据传送目标是在本局域网内通讯,则可直接经过eth0转发数据包;

第四行表示数据传送目的是访问Internet,则由接口eth0将数据包发送到网关192.168.120.240

其中Flags为路由标志,标记当前网络节点的状态。

Flags标志说明:

  • U Up表示此路由当前为启动状态
  • H Host,表示此网关为一主机
  • G Gateway,表示此网关为一路由器
  • R Reinstate Route,使用动态路由从新初始化的路由
  • D Dynamically,此路由是动态性地写入
  • M Modified,此路由是由路由守护程序或导向器动态修改
  • ! 表示此路由当前为关闭状态

备注:route -n (-n 表示不解析名字,列出速度会比route 快)

添加网关/设置网关

命令:route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

[root@localhost ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.120.0   *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0
10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0
224.0.0.0       *               240.0.0.0       U     0      0        0 eth0
default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0

说明:增长一条到达224.0.0.0的路由

屏蔽一条路由

命令:route add -net 224.0.0.0 netmask 240.0.0.0 reject

说明:增长一条屏蔽的路由,目的地址为 224.x.x.x 将被拒绝

[root@localhost ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface224.0.0.0       -               240.0.0.0       !     0      -        0 -

删除路由记录

命令:

route del -net 224.0.0.0 netmask 240.0.0.0

route del -net 224.0.0.0 netmask 240.0.0.0 reject

删除和添加设置默认网关

命令:route add/del default gw 192.168.120.240

[root@localhost ~]# route del default gw 192.168.120.240
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.120.0   *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0
10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0
[root@localhost ~]# route add default gw 192.168.120.240
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.120.0   *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0
10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0
default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0
相关文章
相关标签/搜索