linux 經常使用命令--------雪松整理
博客: http://hi.baidu.com/quanzhou722/blog
錯誤在所不免,還望指正!
==================================
1 文件管理2 軟件管理3 系統管理
4 服務管理5 網絡管理6 磁盤管理
7 用戶管理8 腳本相關9 服務配置
==================================
----------------------------------
1 文件管理
----------------------------------
建立空白文件
touch
不提示刪除非空目錄
rm -rf目錄名
(-r:遞歸刪除 -f 強制)
##################################
恢復 rm 刪除的文件(ext3)
查看磁盤分區格式
df -T
卸載掛載
umount /data/
ext3grep /dev/sdb1 --ls --inode 2
記錄信息繼續查找目錄下文件 inode信息
ext3grep /dev/sdb1 --ls --inode 131081 # 此處是 inode
記錄下 inode信息開始恢復目錄
ext3grep /dev/sdb1 --restore-inode 49153
##################################
windows 文本轉 linux 文本
dos2unix
linux 文本轉 windows 文本
unix2dos
轉換編碼
iconv -f gbk -tutf8 原.txt > 新.txt
查看 md5 值
md5sum
硬連接
ln
符號鏈接
ln -s
查看上下翻頁且顯示行號
cat ? | nl |less
q 退出
結束狀態
ctrl+z
查看文件開頭內容
head
查看文件結尾內容
tail -f # 監視日誌文件
檢查文件類型
file
重命名
rename
rename source_pattern target_pattern source_files
更改默認權限
umask
按數字排序
sort -n
按數字倒敘
sort -nr
過濾重複行
sort -u
刪除重複的行
uniq
重複的行出現次數
uniq -c
只顯示不重複行
uniq -u
將兩個文件合併用 tab鍵分隔開
paste a b
將兩個文件合併指定'+'符號隔開
paste -d'+' a b
將多行數據合併到一行用 tab 鍵隔開
paste -s a
設置隱藏屬性
chattr [+-=] [ASacdistu] 文件或目錄
向下分面器
more
搜索
locate 字符串
查看行數
wc -l
實時某個目錄下查看最新改動過的文件
watch -d-n 1 'df; ls -FlAt /path'
快速備份一個文件
cp filename{,.bak}
##################################
配置編輯器
gconf-editor
vi 配置文件
vi /etc/vimrc
編輯文件
vim
打開行號
:set nu
取消行號
:set nonu
跳轉到 200
200G
取消高亮
:nohl
設置自動縮進
:set autoindent
查看文本格式
set ff
改成 unix 格式
set binary
向前翻頁
ctrl+ U
向後翻頁
ctrl+ D
所有替換
g/字符 1/s//字符 2/g
%s/字符 1/字符 2/g
# 普通用戶打開文檔不能保存
# tee 是一個把 stdin 保存到文件的小工具,而%,是 vim 當中一個只讀寄存器的名字,總保存着當
前編輯文件的文件路徑
:w !sudotee %
##################################
按文件名查找
find /etc -name http
查找某一類型文件
find . -type f
按照文件權限查找
find / -perm
按照文件屬主查找
find / -user
按照文件所屬的組來查找文件
find / -group
文件使用時間在 N 天之內
find / -atime -n
文件使用時間在 N 天之前
find / -atime +n
文件內容改變時間在 N 天之內
find / -mtime -n
文件內容改變時間在 N 天之前
find / -mtime +n
文件狀態改變時間在 N 天前
find / -ctime +n
文件狀態改變時間在 N 天內
find / -ctime -n
# linux 文件無建立時間
# Access 使用時間
# Modify 內容修改時間
# Change 狀態改變時間(權限、屬主)
查找文件長度大於 1M 字節的文件
find / -size +1000000c -print
按名字查找文件傳遞給-exec 後命令
find /etc -name "passwd*" -exec grep "xuesong" {}\;
查找文件名,不取路徑
find . -name 't*' -exec basename {} \;
##################################
====================================================================
----------------------------------
2 軟件管理
----------------------------------
解包 tar
tar xvf 1.tar -C 目錄
打包 tar
tar -cvf 1.tar *
查看 tar
tar tvf 1.tar
給 tar 追加文件
tar -rvf 1.tar 文件名
解包 gz
tar zxvpf gz.tar.gz
打包 gz
tar zcvpf gz.tar.gz
查看 gz
tar ztvpf gz.tar.gz
解壓 bzip2
bzip2 -dv 1.tar.bz2
解壓 gzip 到 tar
gzip -dv 1.tar.gz
壓縮 tar 到 gz
gzip -v 1.tar
bzip2 壓縮
bzip2 -v 1.tar
查看 bzip2
bzcat
rpm 安裝
rpm -ivh
卸載
rpm -e lynx
強制卸載
rpm -e lynx --nodeps
測試
rpm --test lynx
查看全部安裝的 rpm 包
rpm -qa
查找包是否安裝
rpm -qa | grep http
解壓 zip
unzip zip.zip
壓縮 zip
zip zip.zip *
rar3.6 下載地址
http://www.rarsoft.com/rar/rarlinux-3.6.0.tar.gz
壓縮文件爲 rar 包
rar a rar.rar *.jpg
解壓 rar 包
unrar x rar.rar
7z 壓縮
7z a 7z.7z *
7z 解壓
7z e 7z.7z
查看字符行
zgrep 字符 1.gz
打包/home, /etc ,但排除 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
在 /home 當中,比 2005/06/01 新的文件才備份
tar -N "2005/06/01" -zcvf home.tar.gz /home
下載
wgetrc
文本上網
lynx
製做鏡像
cp -v /dev/dvd /software/rhel4.6.iso9660
清除編譯結果
make clean
源碼安裝
./configure --help |less
./configure --prefix=/usr/local/
make
make install
perl 程序編譯
perl Makefile.PL
make
make test
make install
perl 程序編譯
python file.py
編譯 c 程序
gcc -g hello.c -o hello
====================================================================
----------------------------------
3 系統管理
----------------------------------
終端鎖屏 Ctrl+S
解鎖屏 Ctrl+Q
PS1 環境變量控制提示顯示
PS1='[\u@ \H \w\A \@#]\$'
開機啓動模式
vi /etc/inittab
查找命令的目錄
whereis
查看當前要執行的命令所在的路徑
which
讓部命令後臺運行
命令 &
將前臺放入後臺(暫停)
ctrl+z
查看後臺運行程序
jobs
啓動後臺暫停進程
bg 2
調回後臺進程
fg 2
後臺運行不受 shell 退出影響
nohup cmd &
清空整個屏幕
clear
從新初始化屏幕
reset
查詢用過的命令默認 1000 條
history
清楚記錄命令
history -c
cat /root/.bash_history
查看登錄過的用戶信息
last
last -n user
who /var/log/wtmp
列出登陸系統失敗的用戶相關信息
lastb -a
/var/log/btmp
防火牆日誌
tail -f /var/log/messages
ssh 日誌
tail -f /var/log/secure
隨機生成密碼
mkpasswd
-l位數 -C 大小 -c 小寫 -d數字 -s 特殊字符
mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0
當前在線用戶
who
w
查看當前用戶名
whoami
查看登錄用戶名
logname
顯示月曆
cal
查看服務器啓動時間
uptime
設日期
date -s 20091112
設時間
date -s 18:30:50
同步時間
/usr/sbin/ntpdate stdtime.gov.hk
7 天前日期
`date -d "7 daysago" +%Y%m%d`
日期格式轉換
`date +%Y-%m-%d -d '20110902'`
日期和時間
date +%Y-%m-%d_%X
查看時間
hwclock
帳戶影子文件
/etc/shadow
列出全部語系
locale -a
修改語言
LANG=en
修改編碼
vi /etc/sysconfig/i18n
utf-8 <--->GBK
強制字符集
export LC_ALL=C
查詢靜態主機名
vi /etc/hosts
最大鏈接
/etc/security/limits.conf
grub 開機啓動項添加
/etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1
別名
alias
監測命令
watch
查看 Linux 版本信息
uname -a
cat /proc/version
cat /etc/issue
lsb_release -a
查看 cpu 信息
more /proc/cpuinfo
查看 cpu 型號和邏輯核心數
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
cpu 運行的位數
getconf LONG_BIT
物理 cpu 個數
cat /proc/cpuinfo | grep physical | uniq -c
結果大於 0 支持 64 位
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
查看 cpu 是否支持虛擬化
cat /proc/cpuinfo|grep flags
pae 支持半虛擬化 Intel VT 支持全虛擬化
查看內存信息
more /proc/meminfo
查看全面硬件信息
dmidecode
查看服務器型號
dmidecode | grep "Product Name"
查看軟 raid 信息
cat /proc/mdstat
查看硬 raid 信息
cat /proc/scsi/scsi
查看硬件信息
lspci
查看是否支持 raid
lspci|grep RAID
顯示開機信息
dmesg
進程樹
pstree
每隔一秒報告虛擬內存統計信息 9 次
vmstat 1 9
把 180 號進程的優先級加 1
renice +1180
終止某個 PID 進程
kill -9 PID
指定三天後下午 5:00 執行/bin/ls
at 5pm + 3 days /bin/ls
編輯週期任務
crontab -e
分鐘 小時 天 月 星期 命令或腳本
01 1-3/2 * * * 命令或腳本
直接將命令寫入週期任務
echo "40 7 * * 2 /root/sh">>/var/spool/cron/root
查看自動週期性任務
crontab -l
刪除自動週期性任務
crontab -r
禁止或容許用戶使用週期任務
cron.deny 和 cron.allow
啓動自動週期性服務
service crond 啓動 | 中止 | 重啓 | 狀態>
是否打開了某個端口
netstat-anlp | grep 端口號
查看監聽
netstat-anlp
sudo 命令權限添加
visudo
用戶 別名(可用 all)=NOPASSWD:命令 1,命令 2
wangming linuxfan=NOPASSWD:/sbin/apache start,/sbin/apache restart
UserNameALL=(ALL) ALL
製做補丁
diff suzu.c suzu2.c > sz.patch
安裝補丁
patch suzu.c <sz.patch
顯示打開指定文件的全部進程
lsof文件
查看端口的進程
lsof -i :32768
顯示消耗內存最多的 10 個運行中的進程,之內存使用量排序.cpu +3
psaux |grep -v USER | sort-nk +4 | tail
查看內核模塊
lsmod
yum 擴展源
http://download.fedoraproject.org/pub/epel
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm
升級全部包版本,依賴關係,系統版本內核都升級
yum -y update
升級指定的軟件包
yum -y update 軟件包名
不改變軟件設置更新軟件,系統版本升級,內核不改變
yum -y upgrade
yum 搜索相關包
yum search mail
會改變配置文件,改變舊的依賴關係,改變系統版本
dist-upgrade
編輯啓動項
/boot/grub/grub.conf
開機啓動腳本順序
/etc/profile
/etc/profile.d/*.sb
~/bash_profile
~/.bashrc
/etc/bashrc
--------------------------------------------------------------------
top
前五行是系統總體的統計信息。
第一行是任務隊列信息,同 uptime 命令的執行結果。其內容以下:
01:06:48 當前時間
up 1:22 系統運行時間,格式爲時:分
1 user 當前登陸用戶數
load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。
三個數值分別爲 1 分鐘、5分鐘、15 分鐘前到如今的平均值。
第2、三行爲進程和 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
##################################
iptables
內建三個表:nat mangle 和 filter
filter 預設規則表,有 INPUT、FORWARD 和 OUTPUT 三個規則鏈
INPUT進入
FORWARD 轉發
OUTPUT 出去
ACCEPT 將封包放行
REJECT 攔阻該封包
DROP 丟棄封包不予處理
-A 在所選擇的鏈(INPUT 等)末添加一條或更多規則
-D 刪除一條
-E 修改
-p tcp、udp、icmp 0 至關於全部 all!取反
-P 設置缺省策略(與全部鏈都不匹配強制使用此策略)
-s IP/掩碼 (IP/24) 主機名、網絡名和清楚的 IP地址 !取反
-j 目標跳轉,當即決定包的命運的專用內建目標
-i 進入的(網絡)接口 [名稱] eth0
-o 輸出接口[名稱]
-m 模塊
--sport 源端口
--dport 目標端口
#配置文件
vi /etc/sysconfig/iptables
#將防火牆中的規則條目清除掉
iptables -F
#注意:iptables -P INPUTACCEPT
#導入防火牆規則
iptables-restore <規則文件
#保存防火牆設置
/etc/init.d/iptables save
#重啓防火牆服務
/etc/init.d/iptables restart
#查看規則
iptables -L -n
iptables -L -n --line-numbers
#從某個規則鏈中刪除一條規則
iptables -D INPUT --dport 80 -j DROP
iptables -D INPUT 8
#取代現行規則
iptables -R INPUT 8 -s 192.168.0.1 -j DROP
#插入一條規則
iptables -I INPUT 8 --dport 80 -j ACCEPT
#查看轉發
iptables -t nat -nL
#在內核裏打開 ip 轉發功能
echo 1 > /proc/sys/net/ipv4/ip_forward
##################################
#容許本地迴環
iptables -A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
#容許已創建的或相關連的通行
iptables -A INPUT -mstate --state ESTABLISHED,RELATED -j ACCEPT
#開放對外訪問
iptables -P OUTPUTACCEPT
#指定某端口針對 IP 開放
iptables -A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
#容許的 IP 或 IP 段訪問
iptables -A INPUT -s 192.168.10.37 -p tcp -j ACCEPT
#開放對外開放端口
iptables -A INPUT -p tcp --dport 80 -jACCEPT
#關閉入口
iptables -P INPUT DROP
#關閉轉發
iptables -P FORWARD DROP
##################################
iptables 規則文件
# Generated by iptables-save v1.2.11 onFri Feb 9 12:10:37 2007
*filter
:INPUT DROP [637:58967]
:FORWARD DROP [0:0]
:OUTPUTACCEPT [5091:1301533]
#容許的 IP 或 IP 段訪問
-AINPUT -s 127.0.0.1 -p tcp -j ACCEPT
-AINPUT -s 192.168.0.0/255.255.0.0-p tcp -j ACCEPT
#開放對外開放端口
-AINPUT -p tcp --dport80 -jACCEPT
#指定某端口針對 IP 開放
-AINPUT -s 192.168.10.37 -p tcp --dport 22 -jACCEPT
#拒絕全部協議(INPUT 容許的狀況)
#-A INPUT -ptcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
# 容許已創建的或相關連的通行
iptables -A INPUT -mstate --state ESTABLISHED,RELATED -j ACCEPT
#拒絕 ping
-AINPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Feb 9 12:10:37 2007
##################################
經常使用實例
#容許在 IP 訪問指定端口
iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT
#禁止使用某端口
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 31 -j REJECT
#禁止 QQ 端口
iptables -D FORWARD -p udp --dport 8000 -j REJECT
#禁止 icmp 端口
#除 192.168.62.1 外,禁止其它人 ping 個人主機
iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type8 -jACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
#其它狀況不容許
iptables -A INPUT -i eth0 -j DROP
#禁止指定 IP 訪問
iptables -A INPUT -p tcp -s IP -j DROP
#禁止指定 IP 訪問端口
iptables -A INPUT -p tcp -s IP --dport port -j DROP
#阻止全部沒有通過你係統受權的 TCP 鏈接
iptables -t filter -AINPUT -i eth0 -p tcp --syn -j DROP
#添加網段轉發
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
#IP 包流量限制
iptables -A INPUT -f -m limit --limit 100/s--limit-burst 100 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -j DROP
#端口映射
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports
3128
#列出某規則鏈中的全部規則
iptables -L INPUT
#刪除某個規則鏈,不加規則鏈,清除全部非內建的
iptables -X allowed
#將封包計數器歸零
iptables -Z INPUT
#定義新的規則鏈
iptables -N allowed
#定義過濾政策
iptables -P INPUT DROP
#修改某自訂規則鏈的名稱
iptables -E allowed disallowed
#比對通信協議類型是否相符
#-p ! tcp 排除 tcp 之外的udp、icmp。-p all 全部類型
iptables -A INPUT -p tcp
#比對封包的來源IP
#192.168.0.0/24 ! 反向對比
iptables -A INPUT -s 192.168.1.1
#比對封包的目的地 IP
iptables -A INPUT -d 192.168.1.1
#比對封包是從哪片網卡進入
#eth+表示全部的網卡
iptables -A INPUT -i eth0
#比對封包要從哪片網卡送出
iptables -A FORWARD -o eth0
#比對某段時間內封包的平均流量
#例子是用來比對:每小時平均流量是否超過一次 3 個封包。 除了每小時平均次外,也能夠每
秒鐘、每分鐘或天天平均一次,默認值爲每小時平均一次,參數如後: /second、 /minute、/day。
除了進行封數量的比對外,設定這個參數也會在條件達成時,暫停封包的比對動做,以免因
駭客使用洪水攻擊法,致使服務被阻斷。
iptables -A INPUT -mlimit --limit 3/hour
#比對瞬間大量封包的數量
#例子是用來比對一次同時涌入的封包是否超過 5 個(這是默認值),超過此上限的封包將被直
接丟棄。使用效果同上。
iptables -A INPUT -mlimit --limit-burst 5
#比對來自本機的封包
#是否爲某特定使用者所產生的,這樣能夠避免服務器使用 root 或其它身分將敏感數據傳送出 ,
能夠下降系統被駭的損失。惋惜這個功能沒法比對出來自其它主機的封包。
iptables -A OUTPUT -m owner --uid-owner 500
#比對來自本機的封包
iptables -A OUTPUT -m owner --gid-owner 0
iptables -A OUTPUT -m owner --pid-owner 78
iptables -A OUTPUT -m owner --sid-owner 100
#用來比對聯機狀態
iptables -A INPUT -mstate --state RELATED,ESTABLISHED
聯機狀態共有四種:INVALID、ESTABLISHED、NEW 和 RELATED。
#-j參數指定進行的處理動做,處理動做包括:ACCEPT、REJECT、DROP、REDIRECT、
MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,說明:
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
#能夠傳送的封包有幾個選擇:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset
REDIRECT 將封包從新導向到另外一個端口(PNAT)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
MASQUERADE 改寫封包來源 IP 爲防火牆 NIC IP
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
LOG 將封包相關訊息紀錄在 /var/log 中
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUTpackets"
SNAT 改寫封包來源 IP 爲某特定 IP 或 IP 範圍
iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source
194.236.50.155-194.236.50.160:1024-32000
DNAT改寫封包目的地 IP爲某特定 IP 或 IP 範圍
iptables -t nat -A PREROUTING-p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination
192.168.1.1-192.168.1.10:80-100
MIRROR 鏡射封包
QUEUE 中斷過濾程序
RETURN 結束在目前規則煉中的過濾程序
MARK 將封包標上某個代號
##################################
iptables 配置實例
容許某段 IP 訪問任何端口
iptables -A INPUT -s 192.168.0.3/24 -p tcp -j ACCEPT
設定預設規則 (拒絕全部的數據包,再容許須要的,如只作 WEB服務器.仍是推薦三個鏈都是
DROP)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUTACCEPT
(注:意直接設置這三條完已經掉線了)
開啓 22 端口
iptables -A INPUT -p tcp --dport 22 -jACCEPT
若是 OUTPUT 設置成 DROP 的,要寫上下面一條
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(注:,不寫致使沒法 SSH.其餘的端口同樣,OUTPUT 設置成 DROP 的話,也要添加一條鏈)
若是開啓了 web 服務器,OUTPUT 設置成 DROP 的話,一樣也要添加一條鏈
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
作 WEB服務器,開啓 80 端口 ,其餘同理
iptables -A INPUT -p tcp --dport 80 -jACCEPT
作郵件服務器,開啓 25,110 端口
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -jACCEPT
容許 icmp 包經過,容許ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT 設置成 DROP 的話)
iptables -A INPUT -p icmp -jACCEPT (INPUT 設置成 DROP 的話)
容許 loopback!(否則會致使 DNS 沒法正常關閉等問題)
IPTABLES -A INPUT -i lo-p all -jACCEPT (若是是 INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(若是是 OUTPUT DROP)
====================================================================
----------------------------------
4 服務管理
----------------------------------
啓動 sendmail 服務
./sendmail start
/etc/init.d/sendmail start
關閉 sendmail 服務
./sendmail stop
查看 sendmail 服務當前狀態
./sendmail status
發送郵件
echo 內容 | /bin/mail -s "標題" 收件箱
打開服務列表 須要打*
ntsysv
讓某個服務不自動啓動 35 指的是運行級別
httpd:chkconfig --level 35 httpd off
讓某個服務自動啓動
httpd:chkconfig --level 35 httpd on
查看全部服務的啓動狀態
chkconfig --list
查看某個服務的啓動狀態
chkconfig --list |grep httpd
查看服務的狀態
chkconfig –-list [服務名稱]
設置非獨立服務啓狀態
chkconfig 服務名on|off|set
開啓 mysql 後臺運行
/usr/local/mysql/bin/mysqld_safe --user=mysql &
開機啓動執行
vi /etc/rc.d/rc.local
開機啓動和關機關閉服務鏈接
/etc/rc.d/rc3.d/S55sshd
# S 開機 start K 關機 stop 55 級別 後跟服務名
ln -s-f /usr/local/httpd/bin/apachectl /etc/rc.d/rc3.d/S15httpd
====================================================================
----------------------------------
5 網絡管理
----------------------------------
##################################
本機網絡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
HWADDR=00:0C:29:3F:E1:EA
IPADDR=192.168.1.55
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.1.1
##################################
增長邏輯 IP 地址
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0
查看路由表
route
添加路由表
route adddefault gw 192.168.1.1 dev eth0
設置 DNS
vi /etc/resolv.conf
禁用網卡
ifconfig eth0 down
啓用網卡
ifconfig eth0 up
ifup eth0:0 up
測試跳數
traceroute www.baidu.com (linux)
tracert www.baidu.com (windows)
根據 IP 和主機最大數計算掩碼
ipcalc -m"$ip" -p"$num"
用 wget 的遞歸方式下載整個網站
wget --random-wait -r -p -e robots=off -U Mozilla www.example.com
經過 DNS 來讀取 Wikipedia 的 hacker 詞條
dig +short txt hacker.wp.dg.cx
host -t txt hacker.wp.dg.cx
rz ssh 小文件上傳
sz ssh 小文件下載
從 linux ssh 登陸另外一臺 linux
ssh -p 22 wang@192.168.1.209
利用 ssh 操做遠程主機
ssh -p 22 root@192.168.1.209 環境變量中腳本
把本地文件拷貝到遠程主機
scp -P 22 文件 root@ip:/目錄
ssh 鏈接不提示 yes
ssh -o StrictHostKeyChecking=no 192.168.70.130
把遠程指定文件拷貝到本地
scp root@192.168.1.209:遠程目錄 本地目錄
經過 SSH 掛載遠程主機上的文件夾
sshfs name@server:/path/to/folder /path/to/mount/point
卸載的話使用 fusermount 命令
fusermount -u /path/to/mount/point
用 DIFF 對比遠程文件跟本地文件
ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
用 SSH 建立端口轉發通道
ssh -N -L2001:remotehost:80 user@somemachine
嵌套使用 SSH
ssh -t host_Assh host_B
密鑰信任
ssh-keygen –t rsa
vi 用戶/.ssh/authorized_keys
遠程關掉一臺 WINDOWS 機器
net rpc shutdown -I IP_ADDRESS -U username%password
禁 ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
##################################
先 ping 在掃描主機開放端口
nmap -PT 192.168.1.1-111
掃描出系統內核版本
nmap -O 192.168.1.1
掃描端口的軟件版本
nmap -sV 192.168.1.1-111
半開掃描(一般不會記錄日誌)
nmap -sS192.168.1.1-111
不支持 windows 的掃描(判斷是不是 windows)
nmap -sF192.168.1.1-111
nmap -sX 192.168.1.1-111
nmap -sN 192.168.1.1-111
不 ping 直接掃描
nmap -P0 192.168.1.1-111
詳細信息
nmap -d 192.168.1.1-111
沒法找出真正掃描主機(隱藏 IP)
nmap -D 192.168.1.1-111
端口範圍
nmap -p 20-30,139,60000-
表示:掃描 20 到 30 號端口,139 號端口以及全部大於60000 的端口
組合掃描(不 ping、軟件版本、內核版本、詳細信息)
nmap -P0 -sV -O -v 192.168.30.251
##################################
====================================================================
----------------------------------
6 磁盤管理
----------------------------------
查看硬盤容量
df -h
查看磁盤分區格式
df -T
修改只讀文件系統爲讀寫
mount -o remount,rw /
查看卷標
e2label /dev/sda5
建立卷標
e2label /dev/sda5 new-label
NTFS 添加捲標
ntfslabel -v /dev/sda8new-label
ext2 分區轉 ext3 分區
tune2fs -j /dev/sda
格式化分區
mkfs -t ext3 /dev/hda3
指定索引塊大小
mke2fs -b 2048 /dev/sda5
對文件系統修復
fsck -y /dev/sda6
查看超級塊的信息
dumpe2fs -h /dev/sda5
查看當前系統支持文件系統
cat /proc/filesystems
檢測硬盤狀態
smartctl -H /dev/sda
檢測硬盤信息
smartctl -i /dev/sda
檢測全部信息
smartctl -a /dev/sda
檢測目錄下全部文件大小
du -h 目錄
顯示當前目錄中子目錄的大小
du -h --max-depth=1
掛載光驅
mount -t iso9660 /dev/dvd /mnt
掛載鏡像文件
mount -o loop /software/rhel4.6.iso /mnt/
##################################
磁盤 grub 開機引導項添加
/etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1
##################################
創建軟 RAID1
兩塊硬盤分區同樣,分別新建分區文件類型爲 software RAID
建立兩個就點擊 raid 合併爲 RAID1,這裏的掛載點爲正常 linux 目錄
查看 raid 工做狀態
cat /proc/mdstat
兩個盤都加 grub 引導
查看
cat /boot/grub/grub.conf
grub
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
修改 grub 啓動項配置文件
vi /boot/grub/grub.conf
複製 title CentOS 到最後的四行
在下面粘貼修改成剛纔新加的引導(hd1,0)。
查看分區
sfdisk -d/dev/hda
導出 A 盤分區列表
sfdisk -d/dev/hda > fq.hda
將分區列表導入到新加的硬盤
sfdisk /dev/hdb < fq.hda
恢復新掛載的硬盤分區
mdadm /dev/md1 -a /dev/hdb5
# raid5 可利用 lvm 擴容
##################################
新硬盤掛載
fdisk /dev/sdc
p # 打印分區
d # 刪除分區
n # 建立分區, (一塊硬盤最多 4 個主分區,擴展佔一個主分區位置。p 主分區 e 擴展)
w # 保存退出
mkfs -t ext3 -L 卷標 /dev/sdc1 # 格式化相應分區
mount /dev/sdc1 /mnt # 掛載
添加開機掛載分區
vi /etc/fstab
用卷標掛載
LABEL=/data /data ext3 defaults 1 2
用真實分區掛載
/dev/sdb1 /data4 ext3 defaults 1 2
第一個數字"1"該選項被"dump"命令使用來檢查一個文件系統應該以多快頻率進行轉儲, 若不需
要轉儲就設置該字段爲 0
第二個數字"2"該字段被fsck 命令用來決定在啓動時須要被掃描的文件系統的順序, 根文件系統
"/"對應該字段的值應該爲 1, 其餘文件系統應該爲 2。 若該文件系統無需在啓動時掃描則設置該
字段爲 0
##################################
====================================================================
----------------------------------
7 用戶管理
----------------------------------
創建用戶
useradd xuesong
修改密碼
passwd 用戶
echo "xuesong" | passwd xuesong --stdin
查找用戶顯示信息
finger
添加組
groupadd
修改文件擁有者(R 遞歸)
chown -R
修改全部者用戶中包含點"."
chown y\.li:mysql
修改用戶組
chgrp
修改用戶名
usermod -l 新用戶名 老用戶名
修改用戶所屬組
usermod -g user group
修改用戶家目錄
usermod -d 目錄 -m 用戶
將用戶添加到附加組
usermod -G user group
刪除賬號及家目錄
userdel -r
指定組並不容許登陸的用戶
useradd -g www-M -s /sbin/nologin www
切換用戶執行
su-user -c "
#命令 1
"
====================================================================
----------------------------------
8 腳本相關
----------------------------------
##################################
正則表達式
^ 行首定位
$ 行爲定位
. 匹配除換行符之外的任意字符
* 匹配 0 或多個重複字符
+ 重複一次或更屢次
? 重複零次或一次
[] 匹配一組中任意一個字符
[^] 匹配不在指定組內的字符
\ 用來轉義元字符
\< 詞首定位符(支持 vi 和 grep)
\<love
\> 詞尾定位符(支持 vi 和 grep)
love\>
x\{m\} 重複出現 m次
x\{m,\} 重複出現至少 m 次
x\{m,n\} 重複出現至少 m 次不超過n 次
X? 匹配出現零次或一次的大寫字母 X
X+ 匹配一個或多個字母 X
(abc|def)+ 匹配一連串的(最少一個) abc或 def;abc 和 def 將匹配
\d 匹配任意一位數字
\D 匹配任意單個非數字字符
\w 匹配任意單個字母數字字符,同義詞是 [:alnum:]
\s 匹配任意的空白符
\b 匹配單詞的開始或結束
[:alpha:] 表明全部字母不論大小寫
[:lower:] 表示小寫字母
[:upper:] 表示大寫字母
[:digit:] 表示數字字符
() 括號內的字符爲一組
##################################
基本流程結構
if[ $a == $b ]
then
echo "等於"
else
echo "不等於"
fi
##################################
case $xs in
0) echo "0" ;;
1) echo "1" ;;
*) echo "其餘";;
esac
##################################
num=1
# while true 等同 while :
while [ $num -lt 10 ]
do
echo $num
((num=$num+2))
done
##################################
grep a a.txt | while read a
do
echo $a
done
##################################
w=`awk -F ":" '{print $1}' c`
for d in $w
do
$d
done
##################################
for ((i=0;i<${#o[*]};i++))
do
echo ${o[$i]}
done
##################################
until 循環# 當 command 不爲 0 時
until command
do
body
done
##################################
流程控制
break N # 跳出幾層循環
continue N # 跳出幾層循環,循環次數不變
continue # 從新循環次數不變
##################################
變量
將 變量 A 賦值爲字串
A="a bc def"
A=`命令`
間接調用
eval a=\$$a
將 變量 A 定義爲組數
A=(a b c def)
set a1 a2 a3 a4
$1 $2 $*
在子 shell 中運行
(a=bbk)
定義變量類型
declare 或者 typeset
-r 只讀(readonly 同樣)
-i 整形
-a 數組
-f 函數
-x export
declare -in=0
env # 查看環境變量
env | grep "name" # 查看定義的環境變量
set # 查看環境變量和本地變量
read name # 輸入變量
readonly name # 把 name 這個變量設置爲只讀變量,不容許再次設置
readonly # 查看系統存在的只讀文件
export name # 變量 name 由本地升爲環境
export name="RedHat" # 直接定義 name 爲環境變量
export Stat$nu=2222 # 變量引用變量賦值
unset name # 變量清除
export -n name # 去掉只讀變量
shift # 用於移動位置變量,調整位置變量,使$3 的值賦給$2.$2 的值賦予$1
name + 0 # 將字符串轉換爲數字
number " " # 將數字轉換成字符串
經常使用系統變量
$0 # 腳本啓動名(包括路徑)
basename $0 # 只取腳本名
$n # 當前程式的第 n 個參數,n=1,2,…9
$* # 當前程式的全部參數(不包括腳本自己)
$# # 當前程式的參數個數(不包括腳本自己)
$$ # 當前程式的 PID
$! # 執行上一個指令的 PID
$? # 執行上一個指令的返回值
變量引用技巧 ${}
${name:+value} # 若是設置了 name,就把 value 顯示,未設置則爲空
${name:-value} # 若是設置了name,就顯示它,未設置就顯示 value
${name:?value} # 未設置提示用戶錯誤信息 value
${name:=value} # 如未設置就把 value 設置並顯示<寫入本地中>,
${#A} # 可獲得變量中字節
${#A[*]} # 數組個數
${A[2]} # 腳本的一個參數
${A:4:9} # 取變量中第 4 位到後面 9 位
${A/www/http} # 取變量而且替換每行第一個關鍵字
${A//www/http} # 取變量而且所有替換每行關鍵字
定義了一個變量爲:
file=/dir1/dir2/dir3/my.file.txt
${file#*/} # 去掉第一條 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt
${file##*/} # 去掉最後一條/ 及其左邊的字串:my.file.txt
${file#*.} # 去掉第一個 . 及其左邊的字串:file.txt
${file##*.} # 去掉最後一個 . 及其左邊的字串:txt
${file%/*} # 去掉最後條 / 及其右邊的字串:/dir1/dir2/dir3
${file%%/*} # 去掉第一條 / 及其右邊的字串:(空值)
${file%.*} # 去掉最後一個 . 及其右邊的字串:/dir1/dir2/dir3/my.file
${file%%.*} # 去掉第一個 . 及其右邊的字串:/dir1/dir2/dir3/my
# # 是去掉左邊(在鍵盤上 # 在 $ 之左邊)
# % 是去掉右邊(在鍵盤上 % 在$ 之右邊)
# 單一符號是最小匹配﹔兩個符號是最大匹配
##################################
test 條件判斷
# 符號[ ] 等同 test
expression 爲字符串操做
-n str # 字符串 str 是否不爲空
-z str # 字符串 str 是否爲空
expression 爲文件操做
-b # 是否塊文件
-p # 文件是否爲一個命名管道
-c # 是否字符文件
-r # 文件是否可讀
-d # 是否一個目錄
-s # 文件的長度是否不爲零
-e # 文件是否存在
-S # 是否爲套接字文件
-f # 是否普通文件
-x # 文件是否可執行,則爲真
-g # 是否設置了文件的 SGID 位
-u # 是否設置了文件的 SUID 位
-G # 文件是否存在且歸該組全部
-w # 文件是否可寫,則爲真
-k # 文件是否設置了的粘貼位
-tfd # fd 是不是個和終端相連的打開的文件描述符(fd 默認爲 1)
-O # 文件是否存在且歸該用戶全部
! # 取反
expression 爲整數操做
expr1 -a expr2 # 若是 expr1 和 expr2 評估爲真,則爲真
expr1 -o expr2 # 若是 expr1 或 expr2 評估爲真,則爲真
兩值比較
整數 字符串
-lt <: # 小於
-gt >: # 大於
-le <=: # 小於或等於
-ge >=: # 大於或等於
-eq ==: # 等不等
-ne !=: # 不等於
判斷大小,0 爲真,1爲假
test 10 -lt 5
echo $?
1
判斷字符串長度是否爲 0
test -n "hello"
0
##################################
重定向
# 標準輸出stdout 和 標準錯誤 stderr 標準輸入 stdin
cmd 1> fiel # 把 標準輸出 重定向到 file 文件中
cmd > file 2>&1 # 把 標準輸出 和 標準錯誤 一塊兒重定向到file 文件中
cmd 2> file # 把 標準錯誤 重定向到 file 文件中
cmd 2>> file # 把 標準錯誤 重定向到 file 文件中(追加)
cmd >> file 2>&1 # 把 標準輸出 和 標準錯誤 一塊兒重定向到 file 文件中(追加)
cmd < file >file2 # cmd 命令以 file 文件做爲 stdin(標準輸入),以 file2 文件做爲 標
準輸出
cat <>file # 以讀寫的方式打開 file
cmd < file cmd # 命令以 file 文件做爲 stdin
cmd << delimiter
cmd; #從 stdin 中讀入,直至遇到 delimiter 分界符。
delimiter
>&n # 使用系統調用 dup (2) 複製文件描述符 n 並把結果用做標準輸出
<&n # 標準輸入複製自文件描述符 n
<&- # 關閉標準輸入(鍵盤)
>&- # 關閉標準輸出
n<&- # 表示將 n 號輸入關閉
n>&- # 表示將 n 號輸出關閉
##################################
運算符
$[]等同於$(()) # $[]表示形式告訴 shell 求中括號中的表達式的值
~var # 按位取反運算符,把 var 中全部的二進制爲 1 的變爲 0,爲 0 的變爲 1
var\<<str # 左移運算符,把 var 中的二進制位向左移動 str 位,忽略最左端移出的各位,最
右端的各位上補上 0 值,每作一次按位左移就有 var 乘 2
var>>str # 右移運算符,把 var 中全部的二進制位向右移動 str 位,忽略最右移出的各位,
最左的各位上補 0,每次作一次右移就有實現 var 除以 2
var&str # 與比較運算符,var和str對應位,對於每一個二進制來講,若是二都爲1,結果爲1.
不然爲 0
var^str # 異或運算符,比較 var 和 str 對應位,對於二進制來講若是兩者互補,結果爲 1,
不然爲 0
var|str # 或運算符,比較 var 和 str 的對應位,對於每一個二進制來講,如二都該位有一個 1
或都是 1,結果爲 1,不然爲 0
運算符的優先級
級別 運算符 說明
1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>== # 賦值運算符
2 || # 邏輯或 前面不成功執行
3 && # 邏輯與 前面成功後執行
4 | # 按位或
5 ^ # 按異位與
6 & # 按位與
7 ==,!= # 等於/不等於
8 <=,>=,<,> # 大於或等於/小於或等於/大於/小於
9 \<<,>> # 按位左移/按位右移 (無轉意符號)
10 +,- # 加減
11 *,/,% # 乘,除,取餘
12 ! ,~ # 邏輯非,按位取反或補碼
13 -,+ # 正負
##################################
數學運算
$(( )) 整數運算符號大體有這些:
+ - * / **:分別爲 "加、減、乘、除、密運算"
& | ^ !:分別爲 "AND、OR、XOR、NOT" 運算
% :餘數運算
運算
let
let x=16/4
let x=5**5
手工命令行計數器
expr
SUM=`expr 2 \* 3`
計算字串長度
expr length "bkeep zbb"
抓取字串
expr substr "bkeepzbb" 4 9
抓取第一個字符數字串出現的位置
expr index "bkeep zbb" e
整數運算
expr 14 % 9
expr 30 / 3 / 2 # 運算符號有空格
增量計數(加循環便可)
LOOP=0
LOOP=`expr $LOOP+ 1`
數值測試(若是試圖計算非整數,則會返回錯誤。)
rr=3.4
expr $rr + 1
expr: non-numeric argument
rr=5
expr $rr + 1
6
模式匹配(可使用 expr 經過指定冒號選項計算字符串中字符數)
.* 意即任何字符重複 0 次或屢次
expr bkeep.doc : '.*'
在 expr 中可使用字符串匹配操做,這裏使用模式抽取.doc 文件附屬名。
expr bkeep.doc : '\(.*\).doc'
次方計算
echo "m^n"|bc
##################################
grep 用法
-c 顯示匹配到得行的數目,不顯示內容
-h 不顯示文件名
-i 忽略大小寫
-l 只列出匹配行所在文件的文件名
-n 在每一行中加上相對行號
-s 無聲操做只顯示報錯,檢查退出狀態
-v 反向查找
-e 使用正則表達式
-A1 打印匹配行和下一行
-wc匹配出現次數
grep 可用於 if 判斷,找到$?爲 then
過濾關鍵字符行
grep -v "a" txt
精確匹配字符串
grep 'a\>' txt
大小寫敏感
grep -i "a" txt
同時匹配大小寫
grep "a[bB]" txt
查找 0-9 重複三次的所在行
grep '[0-9]\{3\}' txt
任意條件匹配
grep -E "word1 | word2 | word3" file
同時匹配三個
grep word1 file | grep word2 |grep word3
##################################
tr 用法
-c 用字符串 1 中字符集的補集替換此字符集,要求字符集爲 ASCII。
-d 刪除字符串 1 中全部輸入字符。
-s 刪除全部重複出現字符序列,只保留第一個;即將重複出現字符串壓縮爲一個字符串。
[a-z] a-z 內的字符組成的字符串。
[A-Z] A-Z 內的字符組成的字符串。
[0-9] 數字串。
\octal 一個三位的八進制數,對應有效的 ASCII 字符。
[O*n] 表示字符O 重複出現指定次數 n。所以[O*2]匹配 OO 的字符串。
tr中特定控制字符的不一樣表達方式
速記符含義八進制方式
\a Ctrl-G 鈴聲\007
\b Ctrl-H 退格符\010
\fCtrl-L 走行換頁\014
\n Ctrl-J 新行\012
\rCtrl-M 回車\015
\t Ctrl-I tab 鍵\011
\v Ctrl-X \030
將全部大寫轉換成小寫字母
trA-Z a-z
將空格替換爲換行
tr" " "\n"
刪除空行
tr-s "[\012]" < plan.txt
tr-s ["\n"] < plan.txt
刪除文件中的^M,並代之以換行
tr-s "[\015]" "[\n]" < file
tr-s "[\r]" "[\n]" < file
替換 passwd 文件中全部冒號,代之以 tab 鍵
tr-s "[:]" "[\011]" < /etc/passwd
tr-s "[:]" "[\t]" < /etc/passwd
增長顯示路徑可讀性
echo $PATH | tr ":" "\n"
tr在 vi內使用,在 tr 前加處理行範圍和感嘆號('$'表示最後一行)
1,$!tr -d '\t'
Mac -> UNIX
tr"\r" "\n"<macfile > unixfile
UNIX -> Mac
tr"\n" "\r"<unixfile > macfile
DOS -> UNIX
Microsoft DOS/Windows 約定,文本的每行以回車字符(\r)並後跟換行符(\n)結束
tr-d "\r"<dosfile >unixfile
UNIX -> DOS:在這種狀況下,須要用awk,由於 tr 不能插入兩個字符來替換一個字符
awk '{ print $0"\r" }'<unixfile > dosfile
##################################
awk 用法
\b 退格
\f 換頁
\n 換行
\r 回車
\t 製表符 Tab
\c 表明任一其餘字符
-F 改變 FS值(分隔符)
~ 匹配
= 賦值
== 匹配
+= 疊加
[:alnum:] 字母數字字符
[:alpha:] 字母字符
[:cntrl:] 控制字符
[:digit:] 數字字符
[:graph:] 非空白字符(非空格、控制字符等)
[:lower:] 小寫字母
[:print:] 與[:graph:]類似,可是包含空格字符
[:punct:] 標點字符
[:space:] 全部的空白字符(換行符、空格、製表符)
[:upper:] 大寫字母
[:xdigit:] 十六進制的數字(0-9a-fA-F)
內建變量
$n 當前記錄的第 n 個字段,字段間由 FS 分隔
$0 完整的輸入記錄
ARGC 命令行參數的數目
ARGIND 命令行中當前文件的位置 ( 從0 開始算 )
ARGV 包含命令行參數的數組
CONVFMT 數字轉換格式 ( 默認值爲 %.6g)
ENVIRON 環境變量關聯數組
ERRNO 最後一個系統錯誤的描述
FIELDWIDTHS 字段寬度列表 ( 用空格鍵分隔 )
FILENAME 當前文件名
FNR 同 NR ,但相對於當前文件
FS 字段分隔符 ( 默認是任何空格 )
IGNORECASE 若是爲真(即非 0 值) ,則進行忽略大小寫的匹配
NF 當前記錄中的字段數(列)
NR 當前行數
OFMT 數字的輸出格式 ( 默認值是 %.6g)
OFS 輸出字段分隔符 ( 默認值是一個空格 )
ORS 輸出記錄分隔符 ( 默認值是一個換行符 )
RLENGTH 由 match 函數所匹配的字符串的長度
RS 記錄分隔符 ( 默認是一個換行符 )
RSTART 由 match 函數所匹配的字符串的第一個位置
SUBSEP 數組下標分隔符 ( 默認值是 /034) 。
BEGIN 先處理(可不加文件參數)
END 結束時處理
[[:digit:][:lower:]] 數字和小寫字母(佔一個字符)
-F"[ ]+|[%]+" 已多個空格或多個%爲分隔符
[a-z]+ 多個小寫字母
[a-Z] 表明全部大小寫字母(aAbB...zZ)
[a-z] 表明全部大小寫字母(ab...z)
打印匹配到得行
awk '/Tom/'文件
若是第三個字段值小於 4000 纔打印
awk '$3 <4000' 文件
匹配 Tom 開頭的行 打印第一個字段
awk '/^Tom/{print $1}'
顯示全部第一個字段不是以 ly 結尾的行
awk '$1 !~ /ly$/' 文件
條件判斷(若是$1 大於$2,max 值爲爲$1,不然爲$2)
awk '{max=($1 > $2) ? $1 : $2; print max}' 文件
awk '{print ($1>$2)?"第一排"$1:"第二排"$2}' e.txt
(括號表明 if 語句判斷 "?"表明 then":"表明 else)
算術運算(第三個字段和第四個字段乘積大於 500 則顯示)
awk '$3 * $4 > 500' 文件
打印 tom 到 suz 之間的行
awk '/tom/,/suz/' 文件
去掉前三行
awk '{$1="";$2="";$3="";print}' a.sh
將 date 值賦給 d,並將 d 設置爲數組 mon,打印 mon 數組中第 2 個元素
awk 'BEGIN{ "date" | getline d; split(d,mon) ; print mon[2]}' 文件
以空格、:、製表符 Tab 爲分隔符
awk -F'[ :\t]' '{print $1,$2}'
取關鍵字下第幾行
awk '/關鍵字/{a=NR+2}a==NR {print}'
awk 中引用變量
a=22aa&&echo 88:99:44|awk -F":" '{print $1,"'"$a"'",$2,$3}'
指定類型(%d 數字,%s 字符)
/sbin/ifconfig |awk '{printf("line %d,%s\n",NR,$0)}'
awk -v RS=# 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}' 文件
awk 加 if 判斷
awk '{if( $6 > 50) print $1 " Too high" ;\
else print "Range is OK"}' file
awk '{if( $6 > 50) { count++;print $3 } \
else { x+5; print $2 } }' file
awk 加循環
awk '{i = 1; while (i <= NF) { print NF, $i ; i++ } }'file
awk '{ for ( i = 1; i<= NF; i++ )print NF,$i }' file
提取時間,空格不固定
ll | awk -F'[ ]+|[ ][ ]+' '/^$/{print $8}'
查看磁盤空間
df|awk -F"[ ]+|%" '$5>14{print $5}'
取出第四列等於 90 的第五列
awk '$4==90{print $5}'
打印全部以模式 no 或 so 開頭的行
awk '/^(no|so)/' test
排列打印
awk 'END{printf
"%-10s%-10s\n%-10s%-10s\n%-10s%-10s\n","server","name","123","12345","234","1234"}' txt
awk 'BEGIN{printf
"|%-10s|%-10s|\n|%-10s|%-10s|\n|%-10s|%-10s|\n","server","name","123","12345","234","1234"}'
awk 'BEGIN{
print " *** 開 始 *** ";
print "+-----------------+";
printf "|%-5s|%-5s|%-5s|\n","id","name","ip";
}
$1!=1 && NF==4{printf "|%-5s|%-5s|%-5s|\n",$1,$2,$3" "$11}
END{
print "+-----------------+";
print " *** 結 束 *** "
}' txt
awk 中計算(求餘數)
echo list|awk '{ i=($1%100);if ( $i >= 0 ) {print $0,$i}}'
sub 匹配第一次出現的符合模式的字符串,至關於 sed's//'
awk '{sub(/Mac/,"Macintosh");print}' urfile
#用 Macintosh 替換 Mac
gsub 匹配全部的符合模式的字符串,至關於 sed 's//g'
awk '{sub(/Mac/,"MacIntosh",$1); print}' file
#第一個域內用 Macintosh 替換 Mac
處理 sql 語句
cat 1.txt|awk -F" # " '{print "insert into user
(user,password,email)values(""'\''"$1"'\'\,'""'\''"$2"'\'\,'""'\''"$3"'\'\)\;'"}' >>insert_1.txt
引用外部變量
awk '{print "'"$a"'","'"$b"'"}'
在 END 塊裏面把數組內容寫到文件
awk -F: '{name[x++]=$1};END{for(i=0;i<NR;i++)print i,name[i]}' data >tmp
將$1 的值疊加後賦給 sum
awk 'sum+=$1{print sum}' <<EOF
1 11 111
2 22222
8 33333
10 44 444
EOF
加入 END 只打印最後的結果
awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF
1324236000: 4.8726625090e+06 1.4806911317e+07
1324236300: 3.1952608823e+05 1.3144868085e+07
1324236600: 5.0792587262e+05 1.4931600767e+07
EOF
#結果中第一個值是$2 的總和 第二個值是$3 的總和 第三個值是$2 總和除個數(平均值) 第
四個值是$3 總和除個數(平均值)
#e+06 是科學計數法,表示乘以 10 的 6 次方
awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF
1: 3 30
2: 6 60
3: 9 90
EOF
列求和
cat txt |awk '{a+=$1}END{print a}'
列求平均值
cat txt |awk '{a+=$1}END{print a/NR}'
列求最大值
cat txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'
#設定一個變量開始爲 0,遇到比該數大的值,就賦值給該變量,直到結束
求最小值
cat txt |awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}'
判斷$1 是否整除(awk 中定義變量引用時不能帶 $ )
cat txt |awk '{ i=$1%10;if (i == 0 ) {print i}}'
##################################
sed 用法
-n 輸出由編輯指令控制(取消默認的輸出,必須與編輯指令一塊兒配合)
-i 直接對文件操做
-e 多重編輯
p 打印
d 刪除
s 替換
g 配合 s 所有替換
i 行前插入
a 行後插入
r 讀
y 轉換
q 退出
\(..\) 保存..做爲標籤 1(\1)
& 表明查找的串內容
* 前導符
.* 匹配任意多個字符
模式空間(兩行兩行處理)
N 將第二行追加到第一行將換行符\n 替換空極爲一行
n 將第二行覆蓋到第一行
h 把模式空間裏的行拷貝到暫存空間
H 把模式空間裏的行追加到暫存空間
g 用暫存空間的內容替換模式空間的行
G 把暫存空間的內容追加到模式空間的行後
x 將暫存空間的內容於模式空間裏的當前行互換
! 對所選行之外的全部行應用命令。
注意:暫存空間裏默認存儲一個空行。
sed 命令替換並打印出替換行( -i 改變文本)
sed -n -e "{s/文本(正則表達式)/替換的文本/p}"
打印並刪除正則表達式的那部份內容
sed -n -e "{s/^ *[0-9]*//p}"
刪除含關鍵的一行
sed -i "/^$f/d" a
直接對文本替換
sed -i "s/=/:/" c
找到 pearls 開頭在行尾加 jcui
sed -i "/^pearls/s/$/jcui/" ab.txt
標籤(保存\(mar\)做爲標籤 1)
sed -n 's/\(mar\)got/\1ianne/p' 文件
echo "margot"|sed -n 's/\(mar\).*\(t\)/\1\2/p'
sed -e 's/^\([a-zA-Z]\+\) \([a-zA-Z]\+\)\(.*\)/\2 \1\3/g' file
在以[0-9][0-9]結尾的行後加 5
sed 's/[0-9][0-9]$/&5' 文件
打印從第 5 行到以 no 開頭行之間的全部行
sed -n '5,/^no/p' 文件
修改 west 和 east 之間的全部行,在結尾處加*VACA*
sed '/west/,/east/s/$/*VACA*/' 文件
多重編輯(先刪除 1-3 行,在將 1 替換成 2)
sed -e '1,3d' -e's/1/2/' 文件
找到含 suan 的行,在後面加上讀入的文件內容
sed '/suan/r 讀入文件' 文件
找到含 no 的行,寫入到指定文件中
sed -n '/no/w 寫入文件' 文件
取出第一組數字,而且忽略掉開頭的 0
sed 's/[^1-9]*\([0-9]\+\).*/\1/'
打印 1 和 3 之間的行
sed '/1/,/3/p' file
取出指定行
sed -n '1p' 文件
在第 5 行以前插入行
sed '5i\aaa'file
在第 5 行以後抽入行
sed '5a\aaa' file
在匹配行前插入一行
echo a|sed -e '/a/i\b'
在匹配行後插入一行
echo a|sed -e '/a/a\b'
echo a|sed 's/a/&\nb/g'
引用外部變量
sed -n ''$a',10p'
sed -n ""$a",10p"
取用戶家目錄(匹配不爲/的字符和匹配:到結尾的字符所有刪除)
sed -n '{s/^[^\/]*//;s/\:.*//;p}' /etc/passwd
將換行符轉換爲換行
echo abcd\\nabcde |sed 's/\\n/@/g' |tr '@' '\n'
刪除掉@後面全部字符,和空行
sed -e 's/@.*//g' -e '/^$/d'
將幾行合併成一行
echo $(cat file)|sed 's/ //g'
取一列最大值
cat tmp|awk '{print $1}'|sort -n|sed -n '$p'
查找屬主權限爲 7的文件
ls -l|sed -n '/^.rwx.*/p'
在 a 前面加#號
echo a|sed -e 's/a/#&/g'
##################################
圖形 dialog
多選界面[方括號]
dialog --title "Check me" --checklist "Pick Numbers" 15 25 3 1 "one" "off" 2 "two""on" 3 "three"
"off" 2>tmp
多選界面(圓括號)
dialog --title "title" --radiolist "checklist" 20 60 14 tag1 "item1"on tag2 "item2"off 2>tmp
單選界面
dialog --title "title" --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2" 2>tmp
進度條
dialog --title "Installation" --backtitle"Star Linux" --gauge "Linux Kernel" 10 60 50
選擇 yes/no
dialog --title "標題"--backtitle "Dialog" --yesno "說明" 2060
公告
dialog --title "公告標題"--backtitle "Dialog" --msgbox "內容" 20 60
顯示訊息後當即離開
dialog --title "hey" --backtitle "Dialog" --infobox "Is everything okay?"10 60
輸入對話框
dialog --title "hey" --backtitle "Dialog" --inputbox "Is okay?" 10 60 "yes"
顯示文檔內容
dialog --title "Array 30" --backtitle "All " --textbox /root/txt 20 75
多條輸入對話框
dialog --title "Add a user" --form "Add a user" 12 40 4 "Username:" 1 1 "" 1 15 15 0 "Full
name:" 2 1 "" 2 15 15 0 2>tmp
星號顯示輸入--insecure
dialog --title "Password" --insecure --passwordbox "請輸入密碼" 10 35
選擇日期
dialog --stdout --title "日曆" --calendar "請選擇" 0 0 9 1 2010
##################################
腳本頭 # sh 爲當前系統默認 shell,可指定爲 bash 等
#!/bin/sh
臨時文件定義
errtmp=/tmp/$$`date +%s%N`.errtmp
outtmp=/tmp/$$`date +%s%N`.outtmp
true > $outtmp
隨機數
$RANDOM
進程號
$$
納秒
date +%N
在當前 bash 環境下讀取並執行 FileName 中的命令
sourcefile-name # 等同 . FileName
間隔睡眠 5 秒
sleep 5
在接收到信號後將要採起的行動
trap
當前目錄
$PWD
以前一個目錄的路徑
$OLDPWD
返回上一個目錄路徑
cd -
重複打印
yes
自動回答 y 或者其餘
yes |rm-i*
查看目錄全部文件夾
ls -p/home
查看匹配完整路徑
ls -d/home/
命令替換 xargs
#將前面的內容,做爲後面命令的參數
find / -perm +7000 | xargs ls -l
不換行執行下一句話
echo -n aa;echo bb
使轉義生效
echo -e "s\tss\n\n\n"
取字符串中字元
echo $a | cut -c2-6
排列組合(括號內一個元素分別和其餘括號內元素組合)
echo {a,b,c}{a,b,c}{a,b,c}
返回目錄名
pwd | awk -F/ '{ print "目錄名:",$2 }'
替換上一條命令中的(foo)一個短語(bar)
^foo^bar^
!!:s/foo/bar/
!!:gs/foo/bar
##################################
shell 例子
判斷參數是否爲空-空退出並打印 null
#!/bin/sh
echo $1
name=${1:?"null"}
echo $name
##################################
循環數組
for ((i=0;i<${#o[*]};i++))
do
echo ${o[$i]}
done
##################################
判斷路徑
if[ -d /root/Desktop/text/123 ];then
echo "找到了 123"
if[ -d /root/Desktop/text ]
then echo "找到了 text"
else echo "沒找到 text"
fi
else echo "沒找到 123 文件夾"
fi
##################################
匹配替換密碼
#!/bin/sh
cat mailpassword > temp.txt
sed -i "s/:/ =/" temp.txt
w=`awk -F " = " '{print $1}' temp.txt`
for d in $w
do
grep -w $d svnpassword>/dev/null
if[ $? -eq 0 ]
then
sed -i "/^$d/d" svnpassword
grep "^$d" temp.txt >> svnpassword
#替換到轉義就出問題
#sed -i "/^$d/c $(grep "^$d" temp.txt)" svnpassword
fi
done
rm temp.txt
##################################
多行合併
將兩行併爲一行(去掉換行符)
sed '{N;s/\n//}' file
將 4行合併爲一行(可擴展)
awk '{if(NR%4==0){print $0} else {printf"%s ",$0}}' file
將全部行合併
awk '{printf"%s ",$0}'
##################################
shift 用法
./cs.sh 1 2 3
#!/bin/sh
until [ $# -eq 0 ]
do
echo "第一個參數爲: $1參數個數爲: $#"
#shift 命令執行前變量 $1 的值在 shift 命令執行後不可用
shift
done
##################################
給腳本加參數 getopts
#!/bin/sh
while getopts :ab: name
do
case $name in
a) aflag=1
;;
b) bflag=1
bval=$OPTARG
;;
\?) echo "USAGE:`basename $0` [-a] [-b value]"
exit 1
;;
esac
done
if[ ! -z $aflag ] ; then
echo "option -a specified"
echo "$aflag"
echo "$OPTIND"
fi
if[ ! -z $bflag ] ; then
echo "option -b specified"
echo "$bflag"
echo "$bval"
echo "$OPTIND"
fi
echo "here $OPTIND"
shift $(($OPTIND -1))
echo "$OPTIND"
echo " `shift $(($OPTIND -1))` "
##################################
判斷腳本參數是否正確
./test.sh -p123 -P 3306 -h 127.0.0.1 -u root
#!/bin/sh
if[ $# -ne 8 ];then
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
fi
while getopts :u:p:P:h: name
do
case $name in
u)
mysql_user=$OPTARG
;;
p)
mysql_passwd=$OPTARG
;;
P)
mysql_port=$OPTARG
;;
h)
mysql_host=$OPTARG
;;
*)
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
;;
esac
done
if[ -z $mysql_user ] || [ -z $mysql_passwd ] || [ -z $mysql_port ] || [ -z $mysql_host ]
then
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
fi
echo $mysql_user $mysql_passwd $mysql_port $mysql_host
#結果 root123 3306127.0.0.1
##################################
dialog 取值接值退出
outtmp=/tmp/outtmp
dialog --no-shadow --backtitle "雪松製做" --title "請選擇" --ok-label "提交" --cancel-label "取消"
--menu "請選擇" 10 60 0 \
1 "[目錄]" \
q "[退出]" \
2> $outtmp
#判斷提交取消
if[ $? == "1" ]
then
break
#continue
fi
#只判斷退出
pt=`awk '{print}' $outtmp`
if[ $pt == q ]
then
break
fi
#判斷操做
case $pt in
1)
#操做
;;
q)
exit #break
;;
esac
##################################
dialog 輸入對話框加判斷
while :
do
outtmp=/tmp/outtmp
dialog --title "雪松製做" --form "請輸入" 20 60 10 "用戶:" 1 2 "" 1 15 35 0 "ID:" 2 2 "" 2
15 35 0 "" 6 2 ""6 0 0 0 "輸入格式以下" 7 2 "" 7 0 0 0 "說明" 8 2 "" 8 0 0
0 2> $outtmp
yh=`sed -n '1p' $outtmp`
id=`sed -n '2p' $outtmp`
ifecho $yh | grep -e '^[1-9][0-9]\{0,2\}' > /dev/null 2>&1
then
if echo $id | grep -e '^[1-9][0-9]\{0,12\}' > /dev/null 2>&1
then
break
else
echo "您輸入的不合法,請重新輸入!"
fi
else
echo "您輸入的不合法,請重新輸入!"
fi
done
##################################
打印表格
#!/bin/sh
clear
awk 'BEGIN{
print "+--------------------+--------------------+";
printf "|%-20s|%-20s|\n","Name","Number";
print "+--------------------+--------------------+";
}'
a=`grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'`
#cat a.txt |sort +1 -n |while read list
for list in $a
do
name=`echo $list |awk -F: '{print $1}'`
number=`echo $list |awk -F: '{print $2}'`
awk 'BEGIN{printf "|%-20s|%-20s|\n","'"$name"'","'"$number"'";
print "+--------------------+--------------------+";
}'
done
awk 'BEGIN{
print " *** The End *** "
print " "
}'
##################################
判斷日期是否合法
#!/bin/sh
while read a
do
if echo$a | grep -q "-" && date -d $a +%Y%m%d > /dev/null 2>&1
then
if echo $a | grep -e '^[0-9]\{4\}-[01][0-9]-[0-3][0-9]$'
then
break
else
echo "您輸入的日期不合法,請重新輸入!"
fi
else
echo "您輸入的日期不合法,請重新輸入!"
fi
done
echo "日期爲$a"
##################################
打印日期段全部日期
#!/bin/bash
qsrq=20010101
jsrq=20010227
n=0
>tmp
while :;do
current=$(date +%Y%m%d -d"$n day $qsrq")
if[[ $current == $jsrq ]];then
echo $current >>tmp;break
else
echo $current >>tmp
((n++))
fi
done
rq=`awk 'NR==1{print}' tmp`
##################################
打印提示
cat <<EOF
#內容
EOF
登錄遠程執行命令(特殊符號須要\轉義)
ssh root@ip << EOF
#執行命令
EOF
登錄 mysql 執行命令
mysql -uroot -ppasswd -S mysql.sock --default-character-set=gbk -A<<EOF>outtmp
#mysql 命令
EOF
##################################
數學計算的小算法
#!/bin/sh
A=1
B=1
while [ $A-le 10 ]
do
SUM=`expr $A\* $B`
echo "$SUM"
if[ $A= 10 ]
then
B=`expr $B + 1`
A=1
fi
A=`expr $A+ 1`
done
##################################
豎行轉橫行(三種)
cat file|tr '\n' ' '
echo $(cat file)
#!/bin/sh
for i in `cat file`
do
a=${a}""${i}
done
echo $a
##################################
取用戶的根目錄
#! /bin/bash
#showhome.sh
IFS=:
while read namepass uid gid gecos home shell
do
echo $home
done
執行./showhome.sh < /etc/passwd
##################################
把漢字轉成 encode 格式:
echo 論壇 | tr -d "\n" | xxd -i | sed -e "s/0x/%/g" | tr-d " ,\n"
%c2%db%cc%b3
大寫的:
echo 論壇 | tr -d "\n" | xxd -i | sed -e "s/0x/%/g" | tr-d " ,\n" | tr "[a-f]" "[A-F]"
%C2%DB%CC%B3
##################################
把帶有大寫字母的文件名改成所有小寫
#!/bin/bash
for fin *;do
mv $f `echo $f |tr "[A-Z]" "[a-z]"`
done
##################################
查找連續多行,在不連續的行前插入
#/bin/bash
lastrow=null
i=0
cat incl|while read line
do
i=`expr $i + 1`
ifecho "$lastrow" | grep "#include <[A-Z].h>"
then
if echo "$line" | grep -v "#include<[A-Z].h>"
then
sed -i ''$i'i\\/\/Allheader files are include' incl
i=`expr $i + 1`
fi
fi
lastrow="$line"
done
##################################
====================================================================
----------------------------------
9 服務配置
----------------------------------
samba
修改配置文
/etc/samba/smb.conf
[global]
workgroup =WORKGROUP
server string = sambaserver
security=share
hosts allow=網絡主機
[file]
comment=home directories
path=/etc/samba/xuesong
public=yes
writable=yes
browseable=yes
重啓
service smb restart
linux 訪問 windows 共享
smbclient -L //ip 地址或計算機名
##################################
DNS 服務器
DNS 主配置文件,moon.com 域名,zone.moon.com 域的配置文件
vi /etc/named.conf
zone "moon.com" IN {
type master;
file "zone.moon.com";
allow-update { none; };
};
測試主配置文件
named-checkconf
新建域的配置文件 zone.moon.com
vi /var/named/chroot/var/named/zone.moon.com
$TTL 86400
@ IN SOA xs. quanzhou722.163.com. (
20102014
3H
15M
1W
1D
)
IN NS xs.
IN MX 5 mail.
www IN A 192.168.1.209
ftp IN A 192.168.1.209
mail IN A 192.168.1.209
測試 moon.com 域配置文件
named-checkzone moon.com /var/named/chroot/var/named/zone.moon.com
創建域配置文件的軟鏈接
ln -s/var/named/chroot/var/named/zone.moon.com /var/named/zone.moon.com
重啓 named 服務
service named restart
設置 DNS
vi /etc/resolv.conf
測試解析是否成功
host www.moon.com
nslookup www.moon.com
##################################
ftp 配置
查看 vsftp 是否安裝
rpm -qa | grep vsftp
主配置文件
vi /etc/vsftpd/vsftpd.conf
啓動 VSFTPD 服務
service vsftpd restart
查看 21 端口是否開放
netstat-atln |grep 21
一、匿名用戶是否容許訪問
anonymous_enable=YES
anon_mkdir_write_enable=YES
二、本地用戶管理
local_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
將用戶添加到 vsftpd.chroot_list 文件中容許訪問
cat /etc/passwd |grep ":5[0-9][0-9]:" | awk -F : '{print $1}' > /etc/vsftpd.chroot_list
三、虛擬用戶管理
(1)要用到文件數據庫 db4
rpm -qa |grep db4
(2)將賬戶放入文本:(奇數行)用戶名 (偶數行)密碼
vi zhanghu.dat
(3)生成賬戶的文件數據庫
db_load -T -t hash -fzhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db
(4)修改文件數據庫訪問權限
chmod 600 /etc/vsftpd/vsftpd_zhanghu.db
(5)手工創建虛擬用戶所需的 PAM 配置文件
vi /etc/pam.d/vsftpd.zhanghu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu
(6)添加一個虛擬用戶的入口賬戶
useradd -d /var/ZhanDian -s /sbin/nologin XuNiRuKou
(7)在主配置文件中添加虛擬用戶的配置內容
虛擬用戶的新添加配置
chroot_local_user=YES
guest_enable=YES
guest_username=XuNiRuKou
pam_service_name=vsftpd.zhanghu
(8)在 vsftpd.conf 配置文件中指定用戶配置文件的目錄
user_config_dir=/etc/vsftpd/vsftpd_zhandian
(9)創建配置文件中指定用戶配置文件的目錄
mkdir /etc/vsftpd/vsftpd_zhandian
(10)由於入口賬戶是一個本地賬戶,因此要指定虛擬用戶具備本地賬戶的權限,才能讀寫 自
己空間中的文件
虛擬用戶就能夠就擁有寫權限
virtual_use_local_privs=YES
(11)
touch /etc/vsftpd/vsftpd_zhandian/xuesong
echo "local_root=/var/ZhanDian/xuesong" >> /etc/vsftpd/vsftpd_zhandian/xuesong
(12)
mkdir /var/ZhanDian/xuesong
(13)
chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/
(14)重啓服務
/etc/init.d/vsftpd restart
(15)客戶端虛擬帳號測試
創建用戶腳本。最好在加上判斷用戶名是否存在
#!/bin/sh
echo 請輸入用戶名
read y
echo $y >> zhanghu.dat
echo 請輸入密碼
read m
echo $m >> zhanghu.dat
db_load -T -t hash -fzhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db
chmod 600 /etc/vsftpd/vsftpd_zhanghu.db
touch /etc/vsftpd/vsftpd_zhandian/$y
echo "local_root=/var/ZhanDian/$y" >> /etc/vsftpd/vsftpd_zhandian/$y
mkdir /var/ZhanDian/$y
chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/$y
/etc/init.d/vsftpd restart
##################################
httpd 安裝
tar zxvf httpd-2.2.12.tar.gz
cd httpd-2.2.12
./configure --prefix=/usr/local/httpd \
--enable-rewrite
make && make install
ls /usr/local/
groupadd www
useradd -g www-M -s /sbin/nologin www
cd /usr/local/httpd/
vi conf/httpd.conf
服務器開啓在軟件安裝目錄的 bin 中
./apachectl start
網頁放在的 htdocs 中
開機啓動
vi /etc/rc.d/rc.local
/usr/local/httpd/bin/apachectl start
若是啓動提示
httpd: Could not reliably determine the server fully qualified domain name, using 127.0.0.1 for
ServerName
修改/etc/hosts 計算機名
在 httpd.conf 中開啓
ServerName 127.0.0.1:80
編碼設置
AddDefaultCharset UTF-8
AddDefaultCharset GB2312
##################################
mysql 源碼安裝
groupadd mysql
useradd mysql -g mysql -M -s /bin/false
tar zxvf mysql-5.0.22.tar.gz
cd mysql-5.0.22
./configure --prefix=/usr/local/mysql \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--with-mysqld-user=mysql \
--with-extra-charsets=all \
--with-unix-socket-path=/var/tmp/mysql.sock
make && make install
生成 mysql 用戶數據庫和表文件,在安裝包中輸入。
scripts/mysql_install_db --user=mysql
vi ~/.bashrc
export PATH="$PATH: /usr/local/mysql/bin"
配置文件,有 large,medium,small 三個,根據機器性能選擇
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
cd /usr/local
chmod 750 mysql -R
chgrp mysql mysql -R
chown mysql mysql/var -R
cp /usr/local/mysql/libexec/mysqld mysqld.old
ln -s/usr/local/mysql/bin/mysql /sbin/mysql
ln -s/usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
ln -s-f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc3.d/S15mysql5
ln -s-f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc0.d/K15mysql5
##################################
mysql rpm 安裝
到 http://www.mysql.com/downloads/mysql 下載 mysql RPM(service 和 client) ,
MySQL-server-community-5.1.51-1.rhel5.i386.rpm 安裝服務端
MySQL-client-community-5.1.51-1.rhel5.i386.rpm 安裝客戶端
MySQL-devel-community-5.1.51-1.rhel5.i386.rpm 用於 php 的 mysql 安裝
rpm –ivh MySQL-server-community-5.1.51-1.rhel5.i386.rpm
rpm –ivh MySQL-client-community-5.1.51-1.rhel5.i386.rpm
rpm –ivh MySQL-devel-community-5.1.51-1.rhel5.i386.rpm
/etc/init.d/mysqld start
mysqladmin -u root password 'xuesong'
mysql -u root -S /var/lib/mysql/mysql.sock -p
數據目錄/var/lib/mysql
chkconfig --list |grep mysqld
chkconfig --level 3 mysqld on
配置文件(日誌\pid)
/etc/my.cnf
ll /usr/bin/mysql*
##################################
mysql 經常使用命令
啓動 mysql 服務
./mysql/bin/mysqld_safe --user=mysql &
登陸 mysql 的命令
格式: mysql -h 主機地址 -u 用戶名-p 用戶密碼
mysql -h110.110.110.110 -P3306 -uroot -p
mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK
刷新
flush privileges;
顯示全部數據庫
show databases;
打開數據庫
use dbname;
顯示選中數據庫中全部的表
show tables;
查看錶結構
desc tables;
刪除數據庫
drop database name;
刪除表
drop table name;
建立數據庫
create database name;
mysqladmin -h myhost -u root -p create dbname
建立表
create table ka(ka_idvarchar(6),qianshu int);
插入字段
alter table name add column accountid(列名) int(11) NOT NULL(字段不爲空);
不登錄 mysql 插入字段
mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid int(11) NOT
NULL;flush privileges;"
查詢
select 列名稱 from 表名稱;
select host,user,password from user;
備份數據庫
mysqldump -h host -u root -pdbname >dbname_backup.sql
mysqlhotcopy 只能備份 MyISAM 引擎
/bin/mysqlhotcopy -u root -p
還原數據庫
mysql -h host -u root -pdbname < dbname_backup.sql
登錄 mysql 後還原 sql 文件
source 路徑.sql
賦予查詢權限(沒有用戶,直接建立)
grant select on db.* to log@"%" Identified by "123456";
賦予全部權限(沒有用戶,直接建立)
grant all privileges on db.* to log@"IP" identified by '123456' withgrant option;
更改密碼
update user set password=password('新密碼') where user='root'
mysqladmin -u root password 'xuesong'
mysql 查看全部用戶的語句
select user();
刪除用戶
delete from user where user='sss' andhost='localhost' ;
查看主從
show slave status\G;
查看主從複製進程
show processlist;
添加索引 解決停 mysql 速度慢
ALTER TABLE playerADD INDEX weekcredit_faction_index (weekcredit, faction);
建立主從複製用戶
grant replication slave on *.* to '用戶'@'%' identifiedby '密碼';
備份表
mysqldump -u root -p -S mysql.sock --default-character-set=utf8 --hex-blob db table1 table1 >
/data/db.sql
查看系統的字符集和排序方式的設定
SHOW VARIABLES LIKE 'character_set_%';
查看 mysql 全部參數
show variables;
刪除空用戶
delete from user where user='';
建立表指定存儲引擎的類型:
CREATE TABLE innodb (id int, titlechar(20)) ENGINE = INNODB
CREATE TABLE myisam (id int, title char(20)) ENGINE =MyISAM
改變現有的表使用的存儲引擎:
ALTER TABLE mytable ENGINE = MyISAM
查詢表引擎
SHOW TABLE STATUS from 數據庫庫名 where Name='表名';
SHOW TABLE STATUS from db where Name='innodb';
查看 mysql 變量
SHOW VARIABLES;
查詢用戶權限
select host,user,password from user;
查看錶的引擎狀態
show table status
##################################
gd 安裝
分別安裝組件 libxml、zlib、freetype、libpng、jpegsrc、gd
libxml2-2.6.24.tar.bz2
zlib-1.2.3.tar.gz
freetype-2.2.1.tar.gz
libpng-1.2.10.tar.gz
jpegsrc.v6b.tar.gz
gd-2.0.33.tar.gz
libxml安裝
tar xzvf libxml2-2.6.24.tar.bz2
tar xvf libxml2-2.6.24.tar
cd libxml2-2.6.24
./configure
make
make install
zlib 安裝
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make install
freetype 安裝
tar xzvf freetype-2.2.1.tar.gz
cd freetype-2.2.1
./configure --prefix=/usr/local/php/modules/freetype
make
make install
libpng 安裝
tar xzvf libpng-1.2.10.tar.gz
cd libpng-1.2.10
./configure --prefix=/usr/local/php/modules/libpng
jpeg 安裝
mkdir /usr/local/php/modules/jpeg6
mkdir /usr/local/php/modules/jpeg6/bin
mkdir /usr/local/php/modules/jpeg6/lib
mkdir /usr/local/php/modules/jpeg6/include
mkdir /usr/local/php/modules/jpeg6/man
mkdir /usr/local/php/modules/jpeg6/man/man1
一句建立
mkdir -pv /usr/local/jpeg/{,bin,lib,include,man/man1,man1}
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --prefix=/usr/local/php/modules/jpeg6 \
--enable-shared \
--enable-static
make
make install
gd 安裝
tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --prefix=/usr/local/gd2 \
--with-jpeg=/usr/local/php/modules/jpeg6 \
--with-png=/usr/local/php/modules/libpng \
--with-zlib \
--with-freetype=/usr/local/php/modules/freetype
修改 Makefile 文件 231 行,重複的第二個 freetype 改成 libpng
make
make install
php 安裝
tar xvf php-5.1.6.tar
cd php-5.1.bz2.6
./configure --prefix=/usr/local/php \
--sysconfdir=/etc \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-config-file-path=/usr/local/php/lib \
--with-libxml-dir=/usr/local/libxml2 \
--with-zlib \
--with-jpeg-dir=/usr/local/php/modules/jpeg6 \
--with-freetype-dir=/usr/local/php/modules/freetype \
--with-gd=/usr/local/gd2 \
--with-openssl \
--with-regex=php \
--with-gnu-ld \
--with-tsrm-pthreads \
--with-bz2 \
--with-gettext \
--with-db4=/usr \
--enable-ftp \
--enable-bcmath \
--enable-dba \
--enable-sockets \
--enable-soap \
--enable-zend-multibyte \
--enable-mbstring \
--with-curlwrappers \
--with-curl=/usr/local/curl \
--with-pdo-mysql=/usr/local/mysql \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config
make
make install
cp php.ini-recommended /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
在 PHP.IN 添加
[eaccelerator]
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/usr/local/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
完成後在/usr/local/httpd/conf/httpd.conf 文件上添加以下一行:
AddType application/x-httpd-php .php .php5
ln -s/usr/local/php/bin/php /sbin/php
vi index.php
<? php
phpinfo();
?>
重啓 httpd
/usr/local/httpd/bin/apachectl restart
最後一步從新啓動 apache 報以下錯誤:
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load
/usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore
segment prot after reloc: Permission denied
不關閉 SELINUX 的方法:
# setenforce 0
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
# service httpd restart
# setenforce 1
##################################
LINUX 集羣
LVS-- ipvsadm 命令參考
ipvsadm 的用法和格式以下:ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C ipvsadm -R ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight] ipvsadm -d -t|u|f
service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --settcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] ipvsadm
--stop-daemon
ipvsadm -h
命令選項解釋:有兩種命令選項格式,長的和短的,具備相同的意思。在實際使用時,兩種都
能夠。
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增長一臺新的
虛擬服務器。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的全部記錄。
-R --restore 恢復虛擬服務器規則
-S--save 保存虛擬服務器規則,輸出爲-R 選項可讀的格式
-a --add-server 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄。 也就是在一個
虛擬服務器中增長一臺新的真實服務器
-e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄
-d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄
-L|-l--list 顯示內核虛擬服務器表
其餘的選項:-t --tcp-service service-address 說明虛擬服務器提供的是 tcp 的服務[vip:port] or
[real-server-ip:port]
-u --udp-service service-address 說 明 虛 擬 服 務 器 提 供 的 是 udp 的 服 務 [vip:port] or
[real-server-ip:port]
-f --fwmark-service fwmark說明是通過 iptables 標記過的服務類型。
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,-p
--persistent [timeout] 持久穩固的服務。這個選項的意思是來自同一個客戶的屢次請求,將被同
一臺真實的服務器處理。timeout 的默認值爲 300 秒。
-M --netmasknetmask persistent granularity mask
-r --real-server server-address 真實的服務器[Real-Server:port]
-g --gatewaying指定 LVS 的工做模式爲直接路由模式(也是 LVS 默認的模式)
-i--ipip 指定 LVS 的工做模式爲隧道模式
-m --masquerading 指定 LVS 的工做模式爲 NAT 模式
-w --weight weight 真實服務器的權值
--mcast-interface interface 指定組播的同步接口
-c --connection顯示 LVS 目前的鏈接 如:ipvsadm -L -c
##################################
VS-NAT 模式
內容服務器的容量 10~20
使用保留地址的 LAN
雙向重寫
安裝 ipvsadm 軟件
內核作個鏈接
ln -s/usr/src/kernels/2.6.18-53.e15-i686/ /usr/src/linux
安裝軟件
查看 ipvsadm 版本
ipvsadm --version
創建腳本/etc/rc.d/lvs
echo "1" > /proc/sys/net/ipv4/ip_forward
#清除 ipvsadm 一系列規則
ipvsadm -C
ipvsadm -A -t外網 IP:端口 -s rr
ipvsadm -a -t 外網 IP:端口 -r內網 1 服務器 IP:端口 -m -w 1
ipvsadm -a -t 外網 IP:端口 -r內網 2 服務器 IP:端口 -m -w 1
修改內網服務器 ip 和網關,開啓 httpd,創建不一樣頁面測試
缺點不能排除宕機的 web 服務器,可以使用 LVS+Keepalived 組合
##################################
heartbeat心跳檢測(雙機熱備)
安裝 heartbeat 的 rpm 包
須要先裝 heartbeat-pils 和 heartbeat-stonith 兩個包
主節點的配置
安裝完解壓配置文件
rpm -q heartbeat-d
cd /etc/ha.d
cp /usr/share/doc/heartbeat-2.1.3/ha.cf .
cp /usr/share/doc/heartbeat-2.1.3/authkeys .
cp /usr/share/doc/heartbeat-2.1.3/haresources .
查看計算機名,記錄下來
uname -n
vi ha.cf
打開日誌記錄文件
logfile/var/log/ha-log
打開心跳檢測
keepalive 2
死亡時間
deadtime 30
warntime 10
initdead 120
用什麼協議端口(udp)
udpport 694
使用哪一個網卡做爲心跳檢測
bcast eth1
備用的 IP
ucast eth1 192.168.1.20
主節點服務器
node 主節點計算機名
node 另外一個計算機名
ping 外網測試
ping 一個外網的 IP
配置驗證模式
vi authkeys
打開
auth1
1 crc
配置虛擬服務
vi haresources
加上一條名稱和 IP
計算機名 IP httpd
sev1.example.com 222.90.88.88 httpd
hosts 文件要配置上兩個機器的機器名和 IP
vi /etc/hosts
222.90.88.10 sev1.example.com sev2
192.168.1.10 sev1
222.90.88.20 sev1.example.com sev2
192.168.1.20 sev1
chmod 600 authkeys
service heartbeat start
在配置備用節點
直接拷貝主節點的文件修改
安裝完進入安裝目錄
cd /etc/ha.d
用 sftp 登錄主機
sftp 222.90.88.10
cd /etc/ha.d
get ha.cf
get authkeys
get hare*
bye
只須要修改 ha.cf 文件
vi ha.cf
ucast eth1 192.168.1.10
啓動備用節點
service heartbeat start
測試
主節點和負節點創建不一樣 index頁面
主節點虛擬出外網 ip eth0:0
停掉主節點任務
從新訪問
啓動後在訪問
##################################
DR 直接路由模式
同一網段的 LAN
內容服務器的容量 20 以上
下降 LVF 的負載
VIP 服務器的配置腳本
vi /etc/init.d/vip.sh
ifconfig eth0:0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add-host 222.90.88.88 dev eth0:0
ipvsadm -C
ipvsadm -A -t 222.90.88.88:80 -s rr
ipvsadm -a -t 222.90.88.88:80 -r 222.90.88.10 -g
ipvsadm -a -t 222.90.88.88:80 -r 222.90.88.20 -g
ipvsadm
chmod 777 /etc/init.d/vip.sh
/etc/init.d/vip.sh
服務器配置腳本
vi /etc/init.d/lvs.sh
ifconfig lo:0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add-host 222.90.88.88 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
chmod 777 /etc/init.d/lvs.sh
/etc/init.d/lvs.sh
第二臺服務器
sftp 222.90.88.10
get /etc/init.d/lvs.sh
bye
mv lvs.sh /etc/init.d/
/etc/init.d/lvs.sh
測試兩個服務器測試頁面寫入不一樣內容
分別啓動 httpd
真是 IP 能夠分別訪問不一樣服務器,訪問虛擬 IP88,則互相倫叫
##################################
IP 隧道模式
WAN(或 LAN 也可)
內容服務器的容量能到 100
vip-server
vi /etc/init.d/vip.sh
ifconfig tunl0222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add-host 222.90.88.88 dev tunl0
ipvsadm -C
ipvsadm -A -t 222.90.88.88:80 -s rr
ipvsadm -a -t 222.90.88.88 :80 -r 222.90.88.10 -i
ipvsadm -a -t 222.90.88.88 :80 -r 222.90.88.20 -i
ipvsadm
chmod -R 777 /etc/init.d/vip.sh
/etc/init.d/vip.sh
1web 服務器
ifconfig runl0 222.90.88.88 broadcast 222.90.88.88netmask 255.255.255.255 up
route add-host 222.90.88.88 dev tunl0
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_annaunce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_annaunce
sysctl -p
chmod 777 /etc/init.d/lvs.sh
/etc/init.d/lvs.sh
2web 服務器
sftp 222.90.88.10
get /etc/init.d/lvs.sh
bye
mv lvs.sh /etc/init.d/
/etc/init.d/lvs.sh
測試兩個服務器測試頁面寫入不一樣內容
分別啓動 httpd
真是 IP 能夠分別訪問不一樣服務器,訪問虛擬 IP88,則互相倫叫
##################################
sendmail 郵件服務器
配置 DNS 服務器爲 mail 服務器 IP 解析
在配置文件中添加
IN MX 5 mail.
mail IN A 192.168.1.209
重啓服務 service named restart
測試
ping mail.xuesong.com
nslookup mail.xuesong.com
mail 服務器上設置 DNS 服務器
vi /etc/resolv.conf
安裝軟件
sendmail-8.13.8-8.el5.i386.rpm
sendmail-cf-8.13.8-8.el5.i386.rpm
sendmail-doc-8.13.8-8.el5.i386.rpm
yum install dovecot
m4
sendmail 配置文件目錄:/etc/mail
vi local-host-names
添加 xuesong.com
vi sendmai.mc
去掉前面兩個 dnl
dnl TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5LOGIN PLAIN')dnl
dnl define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl
修改 IP
DAEMON_OPTIONS('Port=smtp,Addr=192.168.1.209, Name=MTA')dnl
生成 sendmail 配置文件 sendmail.cf
m4 sendmail.mc > sendmail.cf
查看啓動級別
chkconfig --list |grep sas
開啓啓動級別 3
chkconfig --level 3 saslauthd on
makemap hash access.db < access
vi /etc/dovecot.conf
打開下面一句話
protocols = imap imaps pop3 pop3s
service sendmail restart
service dovecot restart
group mail
useradd -g mail -M -s /sbin/nologin 用戶名
##################################
JDK 安裝
rpm -qa|grep jdk
確認 gcj的版本號
rpm -qa | grep gcj
卸載 gcj
yum -y remove java-1.4.2-gcj-compat
從 SUN 下載 jdk-1_5_0_14-linux-i586-rpm.bin 或 jdk-1_5_0_14-linux-i586.bin
mkdir /usr/java
cd /usr/java
1. jdk-1_5_0_14-linux-i586-rpm.bin 文件安裝
chmod 777 jdk-1_5_0_14-linux-i586-rpm.bin
rpm -ivhjdk-1_5_0_14-linux-i586.rpm
2. jdk-1_5_0_14-linux-i586.bin 文件安裝
chmod u+x jdk-1_5_0_14-linux-i586.bin
./jdk-1_5_0_14-linux-i586.bin
添加環境變量
vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.6.0_23
export
CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
reboot 重啓生效
##################################
xen 管理
查看虛擬主機列表
xm list
使用文本方式鏈接虛擬系統
xm console test
啓動虛擬主機
xm create test
虛擬機和主機切換
ctrl+]
關閉虛擬主機
xm shutdown 主機名
虛擬機克隆(關閉後克隆)
virt-clone -o test-n test1 -f /data/xen/test1.img
虛擬機增長硬盤
dd if=/dev/zero of=/data/xen/test.img bs=1M count=8
編輯原來配置文件,添加新磁盤文件
vi /etc/xen/vm11
name = "vm11"
uuid = "91b0200b-eb41-46d3-1e11-ee2a87035f24"
maxmem = 128
memory = 128
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "tap:aio:/data/vm11.img,xvda,w", "tap:aio:/data/vm11b.img,xvdb,w" ]
vif = [ "mac=00:16:36:75:8a:ea,bridge=virbr0,script=vif-bridge" ]
啓動 XEN 虛擬機並登錄測試新加的磁盤
增長虛擬機網卡
cat /etc/xen/vm11
name = "vm11"
uuid = "91b0200b-eb41-46d3-1e11-ee2a87035f24"
maxmem = 512
memory = 128
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "tap:aio:/data/vm11.img,xvda,w" ]
vif = [ "mac=00:16:36:75:8a:ea,bridge=xenbr0,script=vif-bridge",
"mac=00:16:36:75:8a:eb,bridge=xenbr0,script=vif-bridge" ]
====================================================================php