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
相關文章
相關標籤/搜索