天天看點

linux常用指令

常用指令

ls          顯示檔案或目錄

     -l           列出檔案詳細資訊l(list)

     -a          列出目前目錄下所有檔案及目錄,包括隐藏的a(all)

mkdir         建立目錄

     -p           建立目錄,若無父目錄,則建立p(parent)

cd               切換目錄

touch          建立空檔案

echo            建立帶有内容的檔案。

cat              檢視檔案内容

  tac    反向檢視内容

cp                拷貝

mv               移動或重命名

rm               删除檔案

     -r            遞歸删除,可删除子目錄及檔案

     -f            強制删除

find              在檔案系統中搜尋某檔案

wc                統計文本中行數、字數、字元數  

      -c或--bytes或--chars 隻顯示Bytes數。

      -l或--lines 顯示行數。

      -w或--words 隻顯示字數。

grep             在文本檔案中查找某個字元串

rmdir           删除空目錄

tree             樹形結構顯示目錄,需要安裝tree包

pwd              顯示目前目錄

ln                  建立連結檔案

more、less  分頁顯示文本檔案内容

head、tail    顯示檔案頭、尾内容

ctrl+alt+F1  指令行全屏模式

系統管理指令

stat              顯示指定檔案的詳細資訊,比ls更詳細

who               顯示線上登陸使用者

whoami          顯示目前操作使用者

hostname      顯示主機名

uname           顯示系統資訊

top                動态顯示目前耗費資源最多程序資訊

ps                  顯示瞬間程序狀态 ps -aux

du                  檢視目錄大小 du -h /home帶有機關顯示目錄資訊

df                  檢視磁盤大小 df -h 帶有機關顯示磁盤資訊

ifconfig          檢視網絡情況

ping                測試網絡連通

netstat          顯示網絡狀态資訊

man                指令不會用了,找男人  如:man ls

clear              清屏

alias               對指令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit

kill                 殺死程序,可以先用ps 或 top指令檢視程序的id,然後再用kill指令殺死程序。

打包壓縮相關指令

gzip:

bzip2:

tar:                打包壓縮

     -c              歸檔檔案

     -x              壓縮檔案

     -z              gzip壓縮檔案

     -j              bzip2壓縮檔案

     -v              顯示壓縮或解壓縮過程 v(view)

     -f              使用檔名

例:

tar -cvf /home/abc.tar /home/abc              隻打包,不壓縮

tar -zcvf /home/abc.tar.gz /home/abc        打包,并用gzip壓縮

tar -jcvf /home/abc.tar.bz2 /home/abc      打包,并用bzip2壓縮

當然,如果想解壓縮,就直接替換上面的指令  tar -cvf  / tar -zcvf  / tar -jcvf 中的“c” 換成“x” 就可以了。

關機/重新開機機器

shutdown

     -r             關機重新開機

     -h             關機不重新開機

     now          立刻關機

halt               關機

reboot          重新開機

Linux管道

将一個指令的标準輸出作為另一個指令的标準輸入。也就是把幾個指令組合起來使用,後一個指令除以前一個指令的結果。

例:grep -r "close" /home/* | more       在home目錄下所有檔案中查找,包括close的檔案,并分頁輸出。

Linux軟體包管理

dpkg (Debian Package)管理工具,軟體包名以.deb字尾。這種方法适合系統不能聯網的情況下。

比如安裝tree指令的安裝包,先将tree.deb傳到Linux系統中。再使用如下指令安裝。

sudo dpkg -i tree_1.5.3-1_i386.deb         安裝軟體

sudo dpkg -r tree                                     解除安裝軟體

注:将tree.deb傳到Linux系統中,有多種方式。VMwareTool,使用挂載方式;使用winSCP工具等;

APT(Advanced Packaging Tool)進階軟體工具。這種方法适合系統能夠連接配接網際網路的情況。

依然以tree為例

sudo apt-get install tree                         安裝tree

sudo apt-get remove tree                       解除安裝tree

sudo apt-get update                                 更新軟體

sudo apt-get upgrade         

vim使用

vim三種模式:指令模式、插入模式、編輯模式。使用ESC或i或:來切換模式。

指令模式下:

:q                      退出

:q!                     強制退出

:wq                   儲存并退出

:set number     顯示行号

:set nonumber  隐藏行号

/apache            在文檔中查找apache 按n跳到下一個,shift+n上一個

yyp                   複制光标所在行,并粘貼

h(左移一個字元←)、j(下一行↓)、k(上一行↑)、l(右移一個字元→)

使用者及使用者組管理

/etc/passwd    存儲使用者賬号

/etc/group       存儲組賬号

/etc/shadow    存儲使用者賬号的密碼

/etc/gshadow  存儲使用者組賬号的密碼

useradd 使用者名

userdel 使用者名

adduser 使用者名

groupadd 組名

groupdel 組名

passwd root     給root設定密碼

su root

su - root 

/etc/profile     系統環境變量

bash_profile     使用者環境變量

.bashrc              使用者環境變量

su user              切換使用者,加載配置檔案.bashrc

su - user            切換使用者,加載配置檔案/etc/profile ,加載bash_profile

更改檔案的使用者及使用者組

sudo chown [-R] owner[:group] {File|Directory}

例如:還以jdk-7u21-linux-i586.tar.gz為例。屬于使用者hadoop,組hadoop

要想切換此檔案所屬的使用者及組。可以使用指令。

sudo chown root:root jdk-7u21-linux-i586.tar.gz

檔案權限管理

三種基本權限

R           讀         數值表示為4

W          寫         數值表示為2

X           可執行  數值表示為1

如圖所示,jdk-7u21-linux-i586.tar.gz檔案的權限為-rw-rw-r--

-rw-rw-r--一共十個字元,分成四段。

第一個字元“-”表示普通檔案;這個位置還可能會出現“l”連結;“d”表示目錄

第二三四個字元“rw-”表示目前所屬使用者的權限。   是以用數值表示為4+2=6

第五六七個字元“rw-”表示目前所屬組的權限。      是以用數值表示為4+2=6

第八九十個字元“r--”表示其他使用者權限。              是以用數值表示為4

是以操作此檔案的權限用數值表示為664 

更改權限

sudo chmod [u所屬使用者  g所屬組  o其他使用者  a所有使用者]  [+增權重限  -減少權限]  [r  w  x]   目錄名 

例如:有一個檔案filename,權限為“-rw-r----x” ,将權限值改為"-rwxrw-r-x",用數值表示為765

sudo chmod u+x g+w o+r  filename

上面的例子可以用數值表示

sudo chmod 765 filename

補充:

sort用于排序

sort将檔案的每一行作為一個機關,互相比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後将他們按升序輸出。

sort

  -u  去除重複行

  -r  降序排列

  -o  将排序後結果寫入原檔案

  -n  以數值來排序

  -t   指定排序間隔符

  -k   指定列數

uniq用于去重,不相鄰地行不算重複值

uniq

 -c 統計次數(count)

 -d 隻顯示被計算為重複地行

 -D 顯示所有被計算為重複地行

 -u  顯示唯一值,即沒有重複值的行

  -i忽視大小寫

檢視linux核心版本指令

一.檢視linux核心版本指令 2種

  uname -a

[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

  cat /proc/version

[root@localhost ~]# cat /proc/version

Linux version 2.6.32-431.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013

二.檢視linux系統版本指令 3種

cat /etc/issue

[root@localhost ~]# cat /etc/issue

CentOS release 6.5 (Final)

Kernel \r on an \m

cat /etc/redhat-release

[root@localhost ~]# cat /etc/redhat-release

lsb_release -a

如果提示不存在,可以安裝一下lsb_release

線上安裝 yum install redhat-lsb  或 yum install -y lsb_release

系統更新

在生産環境中,更新核心可能會造成不相容,破壞系統業務的正常運作

yum -y update  更新包以及軟體和系統核心

yum -y  --exclude=kernel*  update

或 yum -y upgrade   更新包,不更新軟體和核心

LVM&RAID 特點&差別

RAID(Redundant Array of Independent Disks,獨立備援磁盤陣列)

LVM(邏輯卷管理器)

差別:

RAID技術用來解決磁盤的讀寫速度和安全性問題,LVM則可以靈活的解決随着實際需求的變化,來調整硬碟分區的大小這個問題。

[root@localhost ~]# hostname -I

192.168.217.128

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

netstat 指令用于顯示各種網絡相關資訊,如網絡連接配接,路由表,接口狀态 (Interface Statistics),masquerade 連接配接,多點傳播成員 (Multicast Memberships) 等等。

輸出資訊含義

執行netstat後,其輸出結果為

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 02210.34.6.89:telnet 210.34.6.96:2873ESTABLISHED

tcp 2960210.34.6.89:1165210.34.6.84:netbios-ssn ESTABLISHED

tcp 00localhost.localdom:9001localhost.localdom:1162ESTABLISHED

tcp 00localhost.localdom:1162localhost.localdom:9001ESTABLISHED

tcp 080210.34.6.89:1161210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets (w/o servers)

Proto RefCnt Flags Type State I-Node Path

unix 1[ ] STREAM CONNECTED 16178@000000dd

unix 1[ ] STREAM CONNECTED 16176@000000dc

unix 9[ ] DGRAM 5292/dev/log

unix 1[ ] STREAM CONNECTED 16182@000000df

從整體上看,netstat的輸出結果可以分為兩個部分:

一個是Active Internet connections,稱為有源TCP連接配接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況隻能在非常少的情況見到。

另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是隻能用于本機通信,性能可以提高一倍)。

Proto顯示連接配接使用的協定,RefCnt表示連接配接到本套接口上的程序号,Types顯示套接口的類型,State顯示套接口目前的狀态,Path表示連接配接到套接口的其它程序使用的路徑名。

常見參數

-a (all)顯示所有選項,預設不顯示LISTEN相關

-t (tcp)僅顯示tcp相關選項

-u (udp)僅顯示udp相關選項

-n 拒絕顯示别名,能顯示數字的全部轉化成數字。

-l 僅列出有在 Listen (監聽) 的服務狀态

-p 顯示建立相關連結的程式名

-r 顯示路由資訊,路由表

-e 顯示擴充資訊,例如uid等

-s 按各個協定進行統計

-c 每隔一個固定時間,執行該netstat指令。

實用指令執行個體

1. 列出所有端口 (包括監聽和未監聽的)

  列出所有端口 netstat -a

# netstat -a | more

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State

tcp        00localhost:30037*:*                     LISTEN

udp        00*:bootpc                *:*

Active UNIX domain sockets (servers and established)

Proto RefCnt Flags       Type       State         I-Node   Path

unix  2[ ACC ]     STREAM     LISTENING     6135/tmp/.X11-unix/X0

unix  2[ ACC ]     STREAM     LISTENING     5140/var/run/acpid.socket

列出所有 tcp 端口 netstat -at

 # netstat -at

tcp        00localhost:ipp           *:*                     LISTEN

tcp        00*:smtp                  *:*                     LISTEN

tcp6       00localhost:ipp           [::]:*                  LISTEN

列出所有 udp 端口 netstat -au

# netstat -au

udp        00*:49119*:*

udp        00*:mdns                  *:*

2. 列出所有處于監聽狀态的 Sockets

隻顯示監聽端口 netstat -l

# netstat -l

Active Internet connections (only servers)

隻列出所有監聽 tcp 端口 netstat -lt

# netstat -lt

隻列出所有監聽 udp 端口 netstat -lu

# netstat -lu

udp        00*:mdns                  *:*

隻列出所有監聽 UNIX 端口 netstat -lx 

# netstat -lx

Active UNIX domain sockets (only servers)

unix  2[ ACC ]     STREAM     LISTENING     6294private/maildrop

unix  2[ ACC ]     STREAM     LISTENING     6203public/cleanup

unix  2[ ACC ]     STREAM     LISTENING     6302private/ifmail

unix  2[ ACC ]     STREAM     LISTENING     6306private/bsmtp

3. 顯示每個協定的統計資訊

顯示所有端口的統計資訊 netstat -s

# netstat -s

Ip:11150total packets received

1with invalid addresses 0forwarded

0incoming packets discarded  11149incoming packets delivered 11635requests sent out

Icmp:

Tcp:

顯示 TCP 或 UDP 端口的統計資訊 netstat -st 或 -su

# netstat -st

# netstat -su

4. 在 netstat 輸出中顯示 PID 和程序名稱 netstat -p

netstat -p 可以與其它開關一起使用,就可以添加 “PID/程序名稱” 到 netstat 輸出中,這樣 debugging 的時候可以很友善的發現特定端口運作的程式。

# netstat -pt

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        10ramesh-laptop.loc:47212192.168.185.75:www        CLOSE_WAIT  2109/firefox

tcp        00ramesh-laptop.loc:52750lax:www ESTABLISHED 2109/firefox

5. 在 netstat 輸出中不顯示主機,端口和使用者名 (host, port or user)

當你不想讓主機,端口和使用者名顯示,使用 netstat -n。将會使用數字代替那些名稱。

同樣可以加速輸出,因為不用進行比對查詢。

# netstat -an

如果隻是不想讓這三個名稱中的一個被顯示,使用以下指令

# netsat -a --numeric-ports

# netsat -a --numeric-hosts

# netsat -a --numeric-users

6. 持續輸出 netstat 資訊

netstat 将每隔一秒輸出網絡資訊。

# netstat -c

tcp        00ramesh-laptop.loc:36130101-101-181-225.ama:www ESTABLISHED

tcp        11ramesh-laptop.loc:52564101.11.169.230:www      CLOSING

tcp        00ramesh-laptop.loc:43758server-101-101-43-2:www ESTABLISHED

tcp        11ramesh-laptop.loc:42367101.101.34.101:www      CLOSING 

7. 顯示系統不支援的位址族 (Address Families)

netstat --verbose

在輸出的末尾,會有如下的資訊

netstat: no support for`AF IPX' on this system.

netstat: no support for`AF AX25' on this system.

netstat: no support for`AF X25' on this system.

netstat: no support for`AF NETROM' on this system

8. 顯示核心路由資訊 netstat -r

# netstat -r

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

192.168.1.0*               255.255.255.0U         000eth2

link-local      *               255.255.0.0U         000eth2

default192.168.1.10.0.0.0UG        000eth2

注意: 使用 netstat -rn 顯示數字格式,不查詢主機名稱。

9. 找出程式運作的端口

并不是所有的程序都能找到,沒有權限的會不顯示,使用 root 權限檢視所有的資訊。

# netstat -ap | grep ssh

tcp        10dev-db:ssh           101.174.100.22:39213CLOSE_WAIT  -

tcp        10dev-db:ssh           101.174.100.22:57643CLOSE_WAIT  -

找出運作在指定端口的程序

# netstat -an | grep ':80'

10. 顯示網絡接口清單

# netstat -i

Kernel Interface table

Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0       1500000000000BMU

eth2       150002619600026883600BMRU

lo        16436040004000LRU

顯示詳細資訊,像是 ifconfig 使用 netstat -ie:

[root@localhost ~]# netstat -ie

eth0      Link encap:Ethernet  HWaddr 00:0C:29:45:0B:C5

          inet addr:192.168.217.128  Bcast:192.168.217.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe45:bc5/64 Scope:Link

lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

11. IP和TCP分析

檢視連接配接某服務端口最多的的IP位址

 wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22"|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20

18221.136.168.36

3154.74.45.242

278.173.31.236

TCP各種狀态清單

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'

established)

Foreign

LISTEN

TIME_WAIT

ESTABLISHED

SYN_SENT

先把狀态全都取出來,然後使用uniq -c統計,之後再進行排序。

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c

143ESTABLISHED

1FIN_WAIT1

1Foreign

1LAST_ACK

36LISTEN

6SYN_SENT

113TIME_WAIT

1established)

 -------------------------------------------------------------------------------------------------------------------------------------

繼續閱讀