常用指令
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)
-------------------------------------------------------------------------------------------------------------------------------------