一、系統常用的配置文件位置、和語法格式
1.常用的網絡配置文件
/etc/sysconfig/network 網絡設置(主機名也在這個文件配置 HOSTNAME=localhost.localdomain)
NETWORK=yes/no 表示網絡是否被配置;
HOSTNAME=hostname hostname 表示服務器的主機名;
GATEWAY=gw-ip gw-ip 表示網絡網關的IP 地址;
FORWARD_IPV4=yes/no 是否開啓IP 轉發功能;
/etc/hosts IP 地址和主機名之間的映射還,包括主機名的別名IP
/etc/services 服務名和端口號之間的映射
/etc/host.conf 文件指定如何解析主機名
/etc/nsswitch.conf 用於管理系統中多個配置文件查找的順序
/etc/resolv.conf 主機的域名搜索順序和DNS服務器的地址
/etc/xinetd.conf inetd 中每一行指定的服務擴展爲一個/etc/xinetd.d/下的配置文件
/etc/sysconfig/network-scripts/ifcfg-ehtN 網卡配置信息
參考:http://www.linuxdiyf.com/viewarticle.php?id=302012
2.環境變量和啓動程序配置
/etc/profile (用戶還有自己的環境變量~/.bash_profile)
3./etc/rc.local 開機啓動自動運行
4./etc/yum.repos.d/CentOS-Base.repo yum源的配置信息
5./etc/sysconfig/iptables 防火牆的配置文件
6./etc/ssh/sshd_config ssh遠程連接配置文件
7./etc/passwd /etc/group /etc/shadow 用戶名密碼有關配置文件
8./etc/cron* 定時任務有關的配置文件
9./var/log/* 系統日誌文件
二、常用的系統指令
1.uname -r 內核版本查看
2.hostname 主機名查看
3.date 系統時間 hwclock硬件時鐘
4.df -h 硬盤和分區
5.du -sh 查看目錄佔用空間
6.cat /root/install.log 查看安裝的軟件包
7.rpm -qa 查看rpm包安裝的軟件
8.yum list installed yum查詢的安裝軟件包
9.ifconfig IP查看(ip指令是個新命令)
10.fdisk -l:檢查磁盤分區
11.mount umount 掛載與取消掛載
12.RPM yum centos軟件包安裝
13.tar 打包壓縮:http://blog.csdn.net/sanshiqiduer/article/details/1913792
14.scp 遠程拷貝
15.ps aux | ps -ef 查看進程
16.reboot shutdown -h now init 0 關機重啓 慎用!!!
17.lspci -tv # 列出所有PCI設備
18.route -n # 查看路由表
19.w who whoami 查看活動用戶 id 指定用戶信息
20. last # 查看用戶登錄日誌
21.crontab -l # 查看當前用戶的計劃任務服務
22.chkconfig --list # 列出所有系統服務
23.locale -a查看系統支持的語言 LANG="zh_CN.UTF-8"修改字符集
24. | 管道 > >> 和 < 重定向
25.find which 查找文件
26.ssh 遠程登錄
27. useradd deluser groupadd passwd gpasswd usermod
28. ulimit -a 系統參數
29.性能分析工具:vmstat sar iostat free uptime netstat top iotop iftop
vmstat命令: 用來獲得有關進程、虛擬內存、頁面交換空間及 CPU活動的信息
1.用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:顯示活躍和非活躍內存
-f:顯示從系統啓動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內存相關統計信息及多種系統活動數量。
delay:刷新時間間隔。如果不指定,只顯示一條結果。
count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
-S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位爲K(1024 bytes)
-V:顯示vmstat版本信息。
2.字段含義說明:
Procs(進程)
r
等待執行的任務數
展示了正在執行和等待cpu資源的任務個數。當這個值超過了cpu個數,就會出現cpu瓶頸。
b
等待IO的進程數量
Memory(內存)
swpd
正在使用虛擬的內存大小,單位k
free
空閒內存大小
buff
已用的buff大小,對塊設備的讀寫進行緩衝
cache
已用的cache大小,文件系統的cache
inact
非活躍內存大小,即被標明可回收的內存,區別於free和active
具體含義見:概念補充(當使用-a選項時顯示)
active
活躍的內存大小
具體含義見:概念補充(當使用-a選項時顯示)
Swap
si
每秒從交換區寫入內存的大小(單位:kb/s)
so
每秒從內存寫到交換區的大小
IO
bi
每秒讀取的塊數(讀磁盤)
現在的Linux版本塊的大小爲1024bytes
bo
每秒寫入的塊數(寫磁盤)
system
in
每秒中斷數,包括時鐘中斷
這兩個值越大,會看到由內核消耗的cpu時間會越多
cs
每秒上下文切換數
CPU(以百分比表示)
Us
用戶進程執行消耗cpu時間(user time) us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期超過50%的使用,那麼我們就該考慮優化程序算法或其他措施了
Sy
系統進程消耗cpu時間(system time)
sys的值過高時,說明系統內核消耗的cpu資源多,這個不是良性的表現,我們應該檢查原因。
Id
空閒時間(包括IO等待時間)
wa
等待IO時間
Wa過高時,說明io等待比較嚴重,這可能是由於磁盤大量隨機訪問造成的,也有可能是磁盤的帶寬出現瓶頸。
SAR(System Activity Reporter系統活動情況報告)http://my.oschina.net/caiyuan/blog/119012
sar命令常用格式
sar [options] [-o file] t [n]
t爲採樣間隔,n爲採樣次數,默認值是1;
-o file表示將命令結果以二進制格式存放在文件中,file 是文件名
options:
-A:所有報告的總和
-u:輸出CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-r:輸出內存和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息
-c:輸出進程統計信息,每秒創建的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息
-n: 網絡統計
man sar / sar -h
IOSTAT:iostat主要用於監控系統設備的IO負載情況,iostat首次運行時顯示自系統啓動開始的各項統計信息,之後運行iostat將顯示自上次運行該命令以後的統計信息。
Usage: iostat [ options ] [ <interval> [ <count> ] ]
-c 僅顯示CPU統計信息.與-d選項互斥.
-d 僅顯示磁盤統計信息.與-c選項互斥.
-k 以K爲單位顯示每秒的磁盤請求數,默認單位塊.
-p device | ALL
與-x選項互斥,用於顯示塊設備及系統分區的統計信息.也可以在-p後指定一個設備名,如:
# iostat -p hda
或顯示所有設備
# iostat -p ALL
-t 在輸出數據時,打印蒐集數據的時間.
-V 打印版本號和幫助信息.
-x 輸出擴展信息.
iostat輸 出項目說明
Blk_read
讀入塊的當總數. Blk_wrtn 寫入塊的總數.
kB_read/s
每秒從驅動器讀入的數據量,單位爲K.
kB_wrtn/s
每秒向驅動器寫入的數據量,單位爲K.
kB_read
讀入的數據總量,單位爲K.
kB_wrtn
寫入的數據總量,單位爲K.
rrqm/s
將讀入請求合併後,每秒發送到設備的讀入請求數.
wrqm/s
將寫入請求合併後,每秒發送到設備的寫入請求數.
r/s
每秒發送到設備的讀入請求數.
w/s
每秒發送到設備的寫入請求數.
rsec/s
每秒從設備讀入的扇區數.
wsec/s
每秒向設備寫入的扇區數.
rkB/s
每秒從設備讀入的數據量,單位爲K.
wkB/s
每秒向設備寫入的數據量,單位爲K.
avgrq-sz
發送到設備的請求的平均大小,單位是扇區.
avgqu-sz
發送到設備的請求的平均隊列長度.
await
I/O請求平均執行時間.包括髮送請求和執行的時間.單位是毫秒.
svctm
發送到設備的I/O請求的平均執行時間.單位是毫秒.
%util
在I/O請求發送到設備期間,佔用CPU時間的百分比.用於顯示設備的帶寬利用率.
當這個值接近100%時,表示設備帶寬已經佔滿.
free:查看系統內存使用情況(cat /proc/meminfo)
從操作系統的角度來看內存分配:
total
總物理內存大小。
used
已分配的大小,注意,對操作系統來說任何被使用的內存都是used。
free
未被分配的物理內存大小。
shared
共享內存大小,主要用於進程間通信,例如Oracle會使用上GB的共享內存。
buffers
主要用於塊設備數據緩衝,例如記錄文件系統的metadata(目錄、權限等等信息)。
cached
主要用於文件內容緩衝
從應用程序的角度來看內存分配:
- buffers/cached
= used(第一行) - buffers - cached
實際上是程序當前"真實使用"的"物理內存"的大小。
+ buffers/cached
= buffers + cached
兩個加起來可以理解爲"暫時借給"系統作爲"緩衝區"使用的內存大小。
[root@localhost cron]# uptime 顯示系統的負載:
11:42:22 up 13 days, 2:30, 1 user, load average: 0.02, 0.05, 0.03
Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等
http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
常見參數
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態
-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
netstat的輸出結果可以分爲兩個部分:
一個是Active Internet connections,稱爲有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在
隊列中堆積。這種情況只能在非常少的情況見到。
另一個是Active UNIX domain sockets,稱爲有源Unix域套接口(和網絡套接字一樣,但是隻能用於本機通信,性能可以提高一倍)。
Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。
top命令能夠實時顯示系統中各個進程的資源佔用狀況
[root@localhost cron]# top
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
統計信息區
前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime 命令的執行結果。其內容如下:
01:06:48 當前時間
up 1:22 系統運行時間,格式爲時:分
1 user 當前登錄用戶數
load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。
三個數值分別爲 1分鐘、5分鐘、15分鐘前到現在的平均值。
第二、三行爲進程和CPU的信息。當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total 進程總數
1 running 正在運行的進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 殭屍進程數
Cpu(s): 0.3% us 用戶空間佔用CPU百分比
1.0% sy 內核空間佔用CPU百分比
0.0% ni 用戶進程空間內改變過優先級的進程佔用CPU百分比
98.7% id 空閒CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
最後兩行爲內存信息。內容如下:
Mem: 191272k total 物理內存總量
173656k used 使用的物理內存總量
17616k free 空閒內存總量
22052k buffers 用作內核緩存的內存量
Swap: 192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閒交換區總量
123988k cached 緩衝的交換區總量。
內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,
該數值即爲這些內容已存在於內存中的交換區的大小。
相應的內存再次被換出時可不必再對交換區寫入。
進程信息區
統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。
序號 列名 含義
a PID 進程id
b PPID 父進程id
c RUSER Real user name
d UID 進程所有者的用戶id
e USER 進程所有者的用戶名
f GROUP 進程所有者的組名
g TTY 啓動進程的終端名。不是從終端啓動的進程則顯示爲 ?
h PR 優先級
i NI nice值。負值表示高優先級,正值表示低優先級
j P 最後使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間佔用百分比
l TIME 進程使用的CPU時間總計,單位秒
m TIME+ 進程使用的CPU時間總計,單位1/100秒
n %MEM 進程使用的物理內存百分比
o VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
p SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。
q RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
r CODE 可執行代碼佔用的物理內存大小,單位kb
s DATA 可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb
t SHR 共享內存大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 進程狀態。
D=不可中斷的睡眠狀態
R=運行
S=睡眠
T=跟蹤/停止
Z=殭屍進程
x COMMAND 命令名/命令行
y WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
z Flags 任務標誌,參考 sched.h
iotop是一個用來監視磁盤I/O使用狀況的 top 類工具,可監測到哪一個程序使用的磁盤IO的信息
安裝:yum -y install iotop http://www.jb51.net/LINUXjishu/247796.html
--version #顯示版本號
-h, --help #顯示幫助信息
-o, --only #顯示進程或者線程實際上正在做的I/O,而不是全部的,可以隨時切換按o
-b, --batch #運行在非交互式的模式
-n NUM, --iter=NUM #在非交互式模式下,設置顯示的次數,
-d SEC, --delay=SEC #設置顯示的間隔秒數,支持非整數值
-p PID, --pid=PID #只顯示指定PID的信息
-u USER, --user=USER #顯示指定的用戶的進程的信息
-P, --processes #只顯示進程,一般爲顯示所有的線程
-a, --accumulated #顯示從iotop啓動後每個線程完成了的IO總數
-k, --kilobytes #以千字節顯示
-t, --time #在每一行前添加一個當前的時間
ifstat工具是個網絡接口監測工具,比較簡單看網絡流量
iftop是一款實時流量監控工具,監控TCP/IP連接等,缺點就是無報表功能。必須以root身份才能運行。
(http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858923.html)
30.Linux網絡工具
ping :測試網絡
scp:遠程拷貝
Telnet:遠程登錄,測試端口
FTP:sftp 文件傳輸
traceroute: 顯示到網絡主機的路徑
nslookup:命令的功能是查詢一臺機器的IP地址和其對應的域名
route:命令是用來查看和設置Linux系統的路由信息
wget:
tcpdump:
curl:
http://www.cnblogs.com/hnrainll/archive/2011/10/12/2208436.html
三、軟件包的安裝
1.源碼包安裝:tar.gz ./conigure -help 查看安裝信息
2.二進制安裝包:tar.gz 解壓直接使用
3.rpm安裝包:需要依賴關係 yum管理自動安裝依賴包
四、文件系統
在LINUX系統中有一個重要的概念:一切都是文件。
下linux下一些主要目錄的功能
/bin:存放二進制可執行文件(例如一些shell命令)。
/dev:存放設備文件。
/etc:存放系統的管理和配置文件(這個目錄很牛逼)
/etc/rc.d:啓動配置文件和腳本
/root:root用戶的主目錄。
/home:存放用戶主目錄,除了root用戶的主目錄外,當創建一個用戶是會在這個目錄下創建相應用戶的主目錄。
/lib:存放一些標準程序設計庫(動態連接共享庫),類似於.dll。
/sbib:系統管理命令,存放系統管理員使用的管理命令。
/tmp:默認的臨時文件存放地點。
/mnt:用戶可以在這個目錄下創建臨時掛載點,例如關在u盤文件系統。
/lost+found:存放系統非正常關機而產生的“無家可歸”的文件。
/proc:虛擬的目錄,是系統內存的映射,可直接訪問這個目錄來獲取系統信息。
/var:一般用來存放時常變化的文件,例如日誌文件,在學習驅動的時候通常查看驅動程序是否成功安裝或卸載是,用dmesg查看的就是/var/log/messages文件。還有就是我
們通過apt-get在網上通過源安裝的程序的安裝包一般會在/var/cache/apt/archives下。
/usr:它是linux系統下最龐大的目錄,存放一般的應用程序和文件。
/usr/bin:衆多的應用程序
/usr/sbin:超級用戶的一些管理程序。
/usr/include linux下開發和編譯應用程序所需要的頭文件(在學習c和高級編程中用的很多頭文件都在這裏面)
/usr/lib:常用的動態鏈接庫和軟件包的配置文件。
/usr/man 幫助文檔
/usr/src:源代碼,例如/usr/src/linux存放linux源代碼
/usr/local/bin:本地增加的命令。
/usr/local/lib:本地增加的庫。
[root@localhost cron]# ls -l
-rw------- 1 root root 44 Oct 28 16:02 root
chomd 更改文件權限
chown 更改文件所屬組和用戶
chattr/lsattr lsattr命令查看文件的隱藏屬性,而用chattr來修改爲正常值
chattr [+-=][ASacdistu]
最爲重要的是屬 +i 這個屬性
五、定時任務
1.編輯定時任務:crontab -e
-l 查看當前用戶定時任務
-r : 刪除目前的時程表
/var/spool/cron 用戶定時任務文件存放目錄
基本格式 :
* * * * * command
分 時 日 月 周 命令
2./etc/crontab文件
這個地方也可以設置定時任務
/etc/cron/* 有日 周 月定時任務腳本
六、備份
1.完全備份
2.增量備份
3.差異備份