91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統運維常用命令及常識

發布時間:2021-09-09 09:51:34 來源:億速云 閱讀:151 作者:chen 欄目:開發技術

本篇內容介紹了“Linux系統運維常用命令及常識”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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 -t utf8 原.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 !sudo tee %
##################################
按文件名查找
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 下載地址
https://cache.yisu.com/upload/information/20210312/310/132911.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 days ago" +%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 +1 180
終止某個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
UserName ALL=(ALL) ALL
制作補丁
diff suzu.c suzu2.c > sz.patch
安裝補丁
patch suzu.c < sz.patch
顯示打開指定文件的所有進程
lsof 文件
查看端口的進程
lsof -i :32768
顯示消耗內存最多的10 個運行中的進程,以內存使用量排序.cpu +3
ps aux |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 分鐘前到現在的平均值。
第二、三行為進程和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 INPUT ACCEPT
#導入防火墻規則
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 -m state --state ESTABLISHED,RELATED -j ACCEPT
#開放對外訪問
iptables -P OUTPUT ACCEPT
#指定某端口針對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 -j ACCEPT
#關閉入口
iptables -P INPUT DROP
#關閉轉發
iptables -P FORWARD DROP
##################################
iptables 規則文件
# Generated by iptables-save v1.2.11 on Fri Feb 9 12:10:37 2007
*filter
:INPUT DROP [637:58967]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5091:1301533]
#允許的IP 或IP 段訪問
-A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT
#開放對外開放端口
-A INPUT -p tcp --dport 80 -j ACCEPT
#指定某端口針對IP 開放
-A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
#拒絕所有協議(INPUT 允許的情況)
#-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
# 允許已建立的或相關連的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#拒絕ping
-A INPUT -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-type 8 -j ACCEPT
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 -A INPUT -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 -m limit --limit 3/hour
#比對瞬間大量封包的數量
#例子是用來比對一次同時涌入的封包是否超過5 個(這是默認值),超過此上限的封包將被直
接丟棄。使用效果同上。
iptables -A INPUT -m limit --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 -m state --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 "INPUT packets"
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 OUTPUT ACCEPT
(注:意直接設置這三條完已經掉線了)
開啟22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
如果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 -j ACCEPT
做郵件服務器,開啟25,110 端口
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
允許icmp 包通過,允許ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT 設置成DROP 的話)
iptables -A INPUT -p icmp -j ACCEPT (INPUT 設置成DROP 的話)
允許loopback!(不然會導致DNS 無法正常關閉等問題)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是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 add default 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_A ssh 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 -sS 192.168.1.1-111
不支持windows 的掃描(判斷是否是windows)
nmap -sF 192.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/sda8 new-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 b c 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 -i n=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 # 文件是否設置了的粘貼位
-t fd # 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 "bkeep zbb" 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
\f Ctrl-L 走行換頁\014
\n Ctrl-J 新行\012
\r Ctrl-M 回車\015
\t Ctrl-I tab 鍵\011
\v Ctrl-X \030
將所有大寫轉換成小寫字母
tr A-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 22 222
8 33 333
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 "說明" 20 60
公告
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 中的命令
source file-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 -p 123 -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
#結果root 123 3306 127.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`
if echo $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
fiA
=`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 name pass 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 f in *;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`
if echo "$lastrow" | grep "#include <[A-Z].h>"
then
if echo "$line" | grep -v "#include <[A-Z].h>"
then
sed -i ''$i'i\\/\/All header 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
1、匿名用戶是否允許訪問
anonymous_enable=YES
anon_mkdir_write_enable=YES
2、本地用戶管理
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
3、虛擬用戶管理
(1)要用到文件數據庫db4
rpm -qa |grep db4
(2)將帳戶放入文本:(奇數行)用戶名(偶數行)密碼
vi zhanghu.dat
(3)生成帳戶的文件數據庫
db_load -T -t hash -f zhanghu.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 -f zhanghu.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 -h210.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_id varchar(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 -p dbname >dbname_backup.sql
mysqlhotcopy 只能備份MyISAM 引擎
/bin/mysqlhotcopy -u root -p
還原數據庫
mysql -h host -u root -p dbname < 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' with grant option;
更改密碼
update user set password=password('新密碼') where user='root'
mysqladmin -u root password 'xuesong'
mysql 查看所有用戶的語句
select user();
刪除用戶
delete from user where user='sss' and host='localhost' ;
查看主從
show slave status\G;
查看主從復制進程
show processlist;
添加索引解決停mysql 速度慢
ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction);
創建主從復制用戶
grant replication slave on *.* to '用戶'@'%' identified by '密碼';
備份表
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, title char(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 --set tcp 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 --netmask netmask 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 eth2
備用的IP
ucast eth2 192.168.1.20
主節點服務器
node 主節點計算機名
node 另一個計算機名
ping 外網測試
ping 一個外網的IP
配置驗證模式
vi authkeys
打開
auth2
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 eth2 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 tunl0 222.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.88 netmask 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-MD5 LOGIN 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 -ivh jdk-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" ]

“Linux系統運維常用命令及常識”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩平市| 额尔古纳市| 安丘市| 十堰市| 淮阳县| 噶尔县| 乐平市| 蓬溪县| 通州区| 诸城市| 玉树县| 乌拉特后旗| 忻城县| 咸阳市| 双江| 东丽区| 汤原县| 尤溪县| 桑日县| 迁西县| 邢台市| 日喀则市| 桓仁| 旬阳县| 遂溪县| 同江市| 新源县| 松潘县| 平阳县| 泗阳县| 湘乡市| 友谊县| 宝兴县| 罗山县| 江达县| 襄汾县| 万盛区| 营山县| 黄龙县| 兰州市| 博客|