About Shell
-----------
Q1.用戶登錄到Linux機器,系統會啟動login子程序處理用戶登錄請求,如何自動設置用戶環境變量?
比如 PATH,CVS_RSH等等
編輯/etc/profile 和 $HOME/.bash_profile $HOME/.bash_login $HOME/.profile
當退出登錄時,shell會執行 ~/.bash_logout
Q2.如何快速執行歷史命令?
fc -s [cmd] 執行編號為cmd的命令,缺省的話,執行最近1條指令
可以使用alias r='fc -s' 登記1個命令別名,減少鍵擊次數
注:
fc - Fix Command
可以用bash內建的命令查找功能,在命令輸入狀態下輸入C-R,則再輸入命令,即可出現
與當前輸入字符串匹配的命令列表
Q3.如何快速查看一個用戶的id和組id?
輸入id 即可查看當前用戶的id和組id(包括數字和名稱)
輸入id [USERNAME] 即可查看 USERNAME的id和組id(包括數字和名稱)
Q4.如何查看OS打開的所有文件句柄?
輸入lsof,可查看所有的打開文件
輸入lsof /path/of/file, 可查看/path/of/file目錄中被打開的文件
Q5.如何轉化不同編碼的文件?
例如 readme.txt 是GB2312編碼的,Console只支持utf-8的,要將readme.txt
打印處理,如果不作編碼轉換,必然出現亂碼.
可以用iconv工具進行轉化
cat readme.txt| iconv -f gb2312 -t utf-8
Q6.如何在當前的shell會話上下文中設置環境變量?
將設置指令寫如一個特定的bash文件,如setup.sh
執行 . setup.sh 命令
注: . 也是bash的一個內建指令
Q7.如何使用Bash的花括號自動擴展?
假設我們要打印出從a到z的26個字母,那么通常做法是從a循環到z,逐個輸出,但我們知道
Linux下這樣的輪子大多數已經被人發明過了,Bash中就有這樣的工具
輸入 echo {a..z}
擴展應用:
a) 當我們要列出多個目錄下的文件時,這能給我們幫助
ls /path/{dir1, dir2}
b) 當我們要改變多個目錄的屬主時
chown /path/{ex?.?*, how_ex}
Q8.如何把一個命令的輸出賦值給某一個特定的變量?
使用語句
var1=$(command)
或者反引號
var1=`command`
Q9. Bash中如何用快捷鍵鍵?
輸入 CTRL-W 刪除左邊文本,直至遇到空格 ( vim 中 dB )
輸入 CTRL-K 刪除從光標位置到行尾的文本 (vim 中 d$ )
輸入 CTRL-Y 粘貼剪貼板中的文本至光標位置 (vim 中 p)
輸入 CTRL-r或 CTRL-s, 可匹配增量匹配當前的字, 顯示出候選的命令.如果有多個匹配
結果,則輸入C-r向后搜索,輸入C-s向前搜索.
Q10. 如何讓Bash中在sudo/man等命令時也會自動補全命令?
可利用Bash中的Programmable Completion Builtins功能,具體語法見
INFO BASH :: Command Line Editing :: Programmable Completion
比如要讓man 具備自動補全的功能,則這么寫
complete -F _man $filenames man
_man 函數會被執行,請求所有可能補全的值寫在COMPREPLY數組中
Q11. Bash中如何Use Here Document?
使用語法
VAR=<<"EOF"
Some here document
EOF
注: 詳見Bash Info - 3.6.5 Here Documents
- read input from the current source until a line containing only WORD (with no trailing
-blanks) is seen.
Q12. Bash中[[和[有何不同?
[[是復合命令,它可以構成測試用的表達式,表達式可以是bash中的條件表達式的任一種,
單目和雙目運算的均可.可以用! && || 這樣的邏輯運算符.
[是內建命令,同樣也是用來測試表達式,表達式可以是Bash條件表達式中的任一種.
可以用! -a -o 這樣的邏輯運算符.
兩者是除了邏輯運算符不同之外,并無明顯區別.
About Man/Info
---------------
Q1.用戶手冊將命令劃分為不同的類別,如何查看分屬不同Section的命令?
man 7 locale # 7代表Section 號
About X
--------
X1.如何獲得系統中所有的字體?
輸入指令 xlsfonts
X2. 如何在ssh登錄到遠程機器上后在本地運行X應用程序?
假設你的本地主機HostA,遠程主機HostB,那么你要遠程連接到HostB上運行X應用,顯示在
HostA的屏幕上.
1. 配置HostA上 ~/.ssh/config 文件
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
2. ssh HostB
3. 執行X應用程序
注意:必須在HostA上開通X11的轉發而不是HostB.
X3. 如果使用第2個屏幕-投影儀?
在Ubuntu 7.04以上中自動支持投影儀,即插即用,但需要插上VGA的接口,重新啟動系統后方可使用
在Ubuntu 7.10版本接上投影儀后,第2個屏幕無輸出,要LOGOUT后才有輸出
About Maintain
--------------
R1. 目錄名字不要包含大寫字符,盡量少包含中文字符.
1. 中文文件名在Unix/Linux下不易輸入,需要X/輸入法的支持.
2. 如果采用Apache的文件訪問接口,非Latin字符大多需要URL轉義,這對于HTML作者不友好
R2. 請及時清理一些臨時,系統日志文件,減少其對存儲空間的占用,也是加快程序運行速度
1. /tmp
2. /var/log
R3. 不要直接用root用戶身份登錄系統
如果你不想讓你系統中的重要文件因為你的操作不當在傾刻間消失,那就用吧.
有人用chown命令把整個操作系統中文件的用戶/組屬性改成了asterisk:asterisk
也有人曾經把/var, /etc兩個目錄刪除,系統必須重裝.
R4. 為了有助于確保Web Mail您的密碼和帳戶的安全,請在每個會話結束時注銷帳戶。
About System
------------
S1. Linux在boot起來之后,先調用/sbin/init,它是其他所有進程的父進程
1.啟動時先運行boot level master script
2.執行硬件初始化腳本
3.執行run level master script,運行級別定義在/etc/inittab中
每級的腳本放在/etc/init.d/rc<X>.d中
4.到最后用戶看到的即是mingetty登錄界面
S2. Linux TTY這種用戶接口的設計思想
用戶通過本地鍵盤或者網絡 -->命令 -->TTY -->Shell Interpreter
--> Excute Cmd --> Output --> TTY --> 本地內存或者網絡 -->顯示器輸出
優點: 可以用不同形式的終端登錄,比如本地鍵盤,遠程網絡,Modem,只有TTY與用戶
之間存在某種連接即可
S3. Linux如何同一張網卡如何支持多個IP?
1. 配置 虛擬接口
ifconfig eth0:0 192.168.12.240
ifconfig eth0:0 netmask 255.255.255.0
2. 增加一個路由表
route add -net 192.168.12.0 netmask 255.255.255.0 dev eth0:0
3. 增加一個缺省的路由表
route add default gw 192.168.12.168
S4. 如果Home分區中空間不夠,但是/usr分區中留有較大的空間,如何平衡利用這兩空間?
目標: 1.通過Home分區文件的形式讀寫數據
2.實際的數據確是存儲在/usr/分區中
利用符號鏈接的方式,在Home分區中建立一個符號鏈接目錄,指向
ln -s /usr/local/voip ~/project/voip
S5. Apache 使用UserDir模塊時,~username形式訪問,Apache告之禁止訪問?
比如/home/robbie 它具有drwx------屬性,必須將它改為
drwxr-xr-x屬性,Apache服務器才可打開用戶目錄
S6. 如何添加自定義的全局的初始化動作?
比如要添加這兩個別名命令fcc,和fpp統計.c和.cpp源文件數目,
可在/etc/bash.bashrc.local中添加如下腳本
alias fcc='ll -R | grep "[:alpha:]*[.]c$" | nl |less'
alias fpp='ll -R | grep "[:alpha:]*[.]cpp$" | nl |less'
注:
Linux Kernel 共有7454個源文件
S7. 如何查看系統中打開某個目錄/文件的進程?
fuser -v FILE_TO_LOOK_UP
S8. 如何讓普通用戶以超級用戶身份執行命令,而不需要其輸入密碼?
配置/etc/sudoers,按照如下方式指定
asterisk ALL = NOPASSWD: /sbin/shutdown
注:
ALL是代表任何網絡主機.
S9. 如何查看Linux系統運行了多長時間?
輸入
uptime
輸出
7:00pm up 3 days 9:49, 11 users, load average: 1.28, 1.29, 1.26
S10.如何查看Linux系統運行狀態信息,比如cpu/內核版本/啟動參數/IO口?
cat /proc/*
S11.如何備份文件?
使用cp命令,如
cp src_files dst_files
注意:
SuSE 9.3 cp 的版本為 5.3.0,對于存在相同文件的覆蓋操作,默認動作是覆蓋
Linux robbie 2.6.11.4-20a-default #1 Wed Mar 23 21:52:37 UTC 2005 i686 i686 i386 GNU/Linux
CentOS 分發版
Linux asterisk1.local 2.6.9-11.EL #1 Wed Jun 8 16:59:52 CDT 2005 i686 i686 i386 GNU/Linux
CentOS SMP的版本
Linux SVC9000.local 2.6.9-11.ELsmp #1 SMP Wed Jun 8 17:54:20 CDT 2005 i686 i686 i386 GNU/Linux
S12. 如何給系統增加一個路由?
存在如下的一條路由
default 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
添加一條路由
route add default 192.168.12.168
S13. 如何使用NFS?
服務器端設置 (以CentOS為例)
A. 在目標主機上設置NFS 共享目錄,修改/etc/exports
增加如下條目:
/mnt/asterisk 192.168.12.0/255.255.255.0(rw)
B. 啟動NFS服務
service nfs start
如果NFS服務已經啟動,那么重讀exports
exportfs -ra
客戶端設置 (2.2.18以上內核內建支持NFS)
手工mount:
mount 192.168.12.238:/mnt/asterisk /path/of/client/nfs
自動mount:
修改 /etc/fstab,增加一條
192.168.12.238:/mnt/asterisk /path/of/client/nfs nfs rw 0
然后執行: mount -a -t nfs
注:
1. 缺省,在服務器端的共享目錄的訪問權限即為mount后的訪問權限
2. nfs服務依賴于portmap,啟動nfs前portmap必須先啟動
S14.如何制作一張可以啟動的CD-ROM?
1. 你需要具備以下這些文件, isolinux目錄以及目錄中的內核,配置,Ramdisk鏡像等
可從Redhat安裝盤上獲得
2. 將isolinux目錄拷貝至你的ISO光盤的根目錄
3. 使用工具mkisofs
mkisofs -o output.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T \
-input-charset utf-8 /path/of/your/isoroot
參考:
http://syslinux.zytor.com/iso.php
注:
1. 制作SVC ISO文件耗時1m45.494s 43.170s(P4,CentOS 4.1)
2. 可以使用mkisofs將多個redhat安裝盤合并為一個dvd的安裝盤
使用到的開關有: -graft-points Psyche-i386-disc1
溶合的項目有 .discinfo=.discinfo isolinux/=isolinux
RedHat/=shrike-i386-disc2/RedHat RedHat/=shrike-i386-disc3/RedHat
docs/=Psyche-docs
S15. 如何刻錄一張CD-R 或者CD-RW?
* 對于CD-R,假設要刻錄的是mydata.iso文件,使用
cdrecord -v speed=4 dev=0,0,0 -data mydata.iso
一般,cdrecord會使用TAO mode for single session模式.
* 對于CD-RW,先要將CD-RW盤的數據內容擦除
cdrecord -v speed=2 dev=0,0,0 -blank=fast
然后和CD-R一樣,再使用刻錄指令.
注:
1. 參數dev=0,0,0是刻錄設備的地址,可以如下命令得到
cdrecord -scanbus
2. 需要的話,在dev參數上加 ATAPI指示符,如
cdrecord -v speed=8 dev=ATAPI:0,0,0 -data boot.iso
3. 一般刻錄一張 560M的CD-ROM,需925.050s
S16. 如何在單一終端中執行多個任務,并在任務之間切換?
舉例:
A. vim hello.txt 編輯一個文檔
B. 中途用戶想退出,查看系統的CPU 運行情況
按 CTRL-Z,掛起當前vim任務;輸入top
C. 用戶在top任務中又想看一下硬盤的分區信息
按 CTRL-Z,掛起當前top任務;輸入fdisk /dev/hda
D. 此時當前運行任務為fdisk,掛起的有2個:vim和top
在fdisk中按 CTRL-Z一樣掛起它
輸入: jobs -l
系統輸出:
[3]+ 21731 Stopped vim hello.txt
[4] 21805 Stopped top
[5]- 21827 Stopped fdisk /dev/hda
[]中的數字代表后臺任務編號,你可以根據它在任務間來回切換
輸入 fg 1 或 fg vim 回到vim任務中,繼續執行
輸入 fg 2 或 fg top 回到top任務中
輸入 fg 3 或 fg fdisk 回到fdisk任務中
S17. 如何快速查看Linux系統的分區信息?
輸入 fdisk -lu /dev/hdx
可看到指定硬盤設備的分區信息.
S18. 我的FTP服務或者Web服務別人無法訪問到?
很可能是你的防火墻做了限制,將你要提供的服務從禁用列表中去除即可.
S19. 軟件A依賴于與庫B,我安裝了B,可A依然提示庫B找不到?
有一種可能性,即庫B不是裝在系統的庫文件目錄/lib和/usr/lib,譬如安裝于
/usr/local/lib下,這樣就找不到
辦法:
1 修改安裝路徑為/lib
2 或將/usr/local/lib添加到系統庫目錄中
* 編輯 /etc/ld.so.conf
加入一行 /usr/local/lib
* 重載庫 sudo ldconfig
S20. 某些系統服務如mysql數據庫未在啟動時加載,如何配置啟動時加載?
使用/sbin/chkconfig工具,如下
/sbin/chkconfig --level 2345 mysql on
就可使mysql服務器在2345級別啟動時自動運行
S21. PHP許多模塊未加載,如何加載它們?
修改/etc/php.ini ,比如你要加載session.so,應寫為
extension=session.so
S22. 如何監控系統從開機到出現登錄界面所使用的時間以及系統的運行狀態?
安裝bootchart軟件包,之后,每次系統啟動完成后會在/var/log/bootchart目錄下生成
監測圖,PNG格式的,里面包含著啟動耗費時間、每一個服務的起止時間.
S23. Ubuntu下如何支持中文輸入?
$sudo apt-get install scim scim-modules-socket scim-modules-table scim-pinyin scim-tables-zh scim-input-pad
$sudo sh -c " echo 'export XMODIFIERS=@im=SCIM ; export
GTK_IM_MODULE="scim" ; export QT_IM_MODULE="scim" ; scim -d ' >
/etc/X11/Xsession.d/95xinput "
$sudo chmod +755 /etc/X11/Xsession.d/95xinput
# 注:在Dapper下省略后兩步
#注:在Dapper里也可以直接選擇系統->系統管理—>語言支持(language support)勾選Chinese 就會自動安裝和配置scim
分解一下看看:
安裝scim輸入法平臺
S24. NFS服務起來后,在客戶端mount一直提示"mount: RPC: Timed out\n"?
表現:
* 查了portmap, nfs都服務端都沒有問題
* showmount -e nfs_server也沒有問題
* 就是在mount -t nfs nfs_server:/path /local/path時出"mount: RPC: Timed out\n"的錯誤
解決: 路由可能是原因
出現這種問題,在查遍了許多文章還沒有結果的情況下,請查一下服務器的網絡配置,特別小心多網卡
情況下的路由,如果你的缺省路由類似這樣
default 220.250.26.1 0.0.0.0 UG 0 0 0 eth1
那么很可能路由是罪魁禍首.
S25. 雙網卡如何共享網絡連接?
參考 nat.sh
S26. 如何解決SCIM和Open Office不兼容,導致Open Office異常退出的問題?
問題描述
1.系統環境中設置了scim為輸入法
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim
2.在KDE應用比如Konsole中可以正常輸入中文,但打開open office卻異常退出,
打開其它應用Mozilla Thunderbird,也是異常退出
這里也有描述 https://bugs.launchpad.net/openoffice/+bug/103079
原因
scim與GTK2的應用程序存在二進制的兼容性問題,scim是c++語言實現的,而gtk2
應用比如openoffice, moizlla Thunderbird是采用C語言實現的,在加載輸入法
時會導致應用程序內存分配錯誤.
解決辦法
1. 安裝scim-bridge模塊
http://www.scim-im.org/projects/scim_bridge
2. 修改GTK應用程序的輸入法配置
export GTK_IM_MODULE=scim-bridge
3. 登出桌面系統,再登錄,即可正常打開ooffice
About Toolkit
-------------
T1. 使用grep查找.gz文件中包含特定字符串的行?
舉例,有個文件,ls-lrR.txt.gz, 待查找的字符串為開頭為rms,結尾為ogg的文件,可以用下列方式
gunzip -c ls-lrR.txt.gz | grep 'rms-.*ogg'
注: *NIX環境下, .可代表任何字符, *代表任意匹配,+代表至少出現1次,?代表至多出現1次
T2. Windows 2000運行有telnet服務,這樣可以使用linux的konsole/或者其他終端模擬器連接windows主機.
telnet pc.window.address
T3. 如何查看PDF/ps格式的文檔?
gs ps_file_name3
gs pdf_file_name
Note: gs is PostScript and PDF language interpreter and previewer
T4. 如何跟蹤IP報文的路徑?
Linux下,輸入traceroute HOST_NAME|IP
Win32下,輸入tracert HOST_NAME|IP
T5. 如何查看內核的路由表?
Linux下,輸入/sbin/route
Win32下,輸入route PRINT
T6. 如何內核中的網絡接口卡的物理地址?
Linux下,輸入/sbin/arp
Win32下,輸入 arp -a
T7. 如何實現按1個快捷鍵即輸入"年-月-日 星期x"?
可以使用map命令,將某一個快捷鍵變為命令輸入
參考:map <F2> ggA<C-R>=strftime("%Y-%m-%d %A")<CR><Esc>
T8. 如何使用Shell工具鏈統計一個目錄下所有.c的原文件數目?
分析:.c原文件的特征是以.c字符為結尾,可以使用正則表達是[.]c表示
ll -R | grep "[:alpha:]*[.]c$" | nl |less
正則表達式 ([0-9]{5,}) 代表由5位數字構成的單詞,()是單詞控制字符
T9. 如何高效的使用FTP客戶端工具?
lftp 工具可以完美的支持,它支持提前信息獲取,Tab目錄或文件補齊.
lftp 支持下載進度指示,%形式,下載速率.
lftp 支持斷線后自動恢復連接.
lftp 在絕大多數Linux分發版中都有安裝.
T10. SSH遠程登錄工具,認證過程解析?
* 客戶登錄到遠程主機,必須提供identity
* SSH服務器認證這個identity
* Host Key 和 Public Key的關系
* Challenge = a random number, encrypted by user's public key
T11. 如何快速的執行計算命令?
比如,計算硬盤的大小,BLOCK數18335302,每個BLOCK為512字節
echo "512*18335302" | bc
T12. vsftpd/wu-ftpd如何啟用匿名ftp服務?
對于vsftpd,編輯/etc/vsftpd.conf,確認開關
anonymous_enable=YES
注:
1. 匿名ftp用戶登錄所見目錄對應于系統中ftp用戶的HOME目錄,一般為/var/ftp,可變更
2. ftp用戶的HOME目錄owner:group要設為root:root,用戶才通過匿名訪問,否則有500錯誤
T13. 如何快速得到文件系統中各個目錄對硬盤的占用情況?
在根目錄下輸入 du -h --max-depth=1
T14. 如何快速查看指定的man文件?
輸入 man -l /path/of/your/man/file
T15. 如何查看一個IP段范圍內的IP地址與前綴?
利用 ipcount命令,比如查看起始地址為 192.168.3.2
數量為100的所有ip地址前綴
輸入
ipcount 192.168.3.2+100
T16. VsFtpd服務器登錄時,每個文件的owner和group都顯示為ftp,
因為權限受限,無法上傳,怎么辦?
編輯/etc/vsftpd.conff
設置 hide_ids=NO
T17. Lynx文本瀏覽器如何實現文本行的滾動?
輸入 CTRL-N 向下翻動兩行
輸入 CTRL-P 向上翻動兩行
T18. 如何抓取網絡接口中傳輸的數據報文?
tcpdump -i interface
T19. 如何查看一臺主機的IP地址?
host name 即可查看name對應的IP地址
T20. 如何啟用NAT?
192.168.3.0/24局域網主機通過WAN連接網絡
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to 218.67.79.7
echo 1 > /proc/sys/net/ipv4/ip_forward
T21. 如何在命令行下查看word文檔?
安裝antiword這個工具包,輸入
antiword wordfile
這個工具就會將word文檔內容輸出到標準輸出。
注:
可以使用mc這個外包shell調用antiword,即通過查看功能
T22. 如何快速的排序一個文本文件?
執行
sort -u unsortedfile -o sortedfile
T23. 如何給源代碼打上patch?
舉例,給vsftpd服務器源碼打上補丁
cd vsftpd-2.0.1
patch -p1 -b < patchfile
開關說明:
-p1 表示patch中必須去除一級目錄前綴
-b 表示patch前備份原始文件
T24. 如何生成補丁文件?
假設有文件origfile,經過修改變為destfile
那么如何根據origfile和destfile的區別生成補丁呢?
diff -u origfile destfile > patchfile
如果是兩個目錄進行比較,那么需要使用
diff -urN origdir destdir > patchfile
注意: -N選項視新文件為空文件
T25. 如何通過http協議訪問svn倉庫?
使用apache2, 加載mod_dav.so和mod_dav_svn.so兩個模塊
假設你的svn倉庫父目錄為/srv/svnroot,如下配置即可
<Location /svn>
DAV svn
SVNParentPath /srv/svnroot
</Location>
重啟apache2,使用svn co http://localhost/svn/repos 即可checkout倉庫repos中的文件
注意:
1. 如果無法通過http commit,報告這樣的錯誤
svn: Can't open activity db: APR does not understand this error code
需要將/srv/svnroot/repos/dav目錄的訪問權限改寫為0777
2. 如果提示對“%$s”的方法 %$s 失敗: 403 Forbidden (http://localhost)錯誤
則查看apache2的error.log,并確認dav_svn的配置中
LimitExcept GET PROPFIND OPTIONS REPORT是被注釋掉的
3. 如果需要限制用安全鏈接訪問版本庫,則在Location配置選項中加入
SSLRequireSSL
T26. 如何啟用Apache的https安全協議?
參考資料:
* SSL Certificates HOWTO
* Linux Apache SSL PHP/FI frontpage mini-HOWTO
* svn-book.pdf R1876
* Professional LAMP - Linux, Apache, MySQL, & PHP5 Web Development 2006.pdf
1. 編譯或者下載apache2 的mod_ssl.so模塊
2. 使用openssl的工具生成供您的站點使用的服務器證書和服務器公私鑰
利用openssl庫提供的工具CA.pl,位于/usr/lib/ssl/misc. 這里講述自身構建CA,然
后用該CA來簽名證書的過程,當然也可以提交給其他CA機構來簽名認證
2.1 先生成CA以及相關的文件
$ CA.pl -newca
按照命令提示,依次輸入CA的私鑰密碼\Country Name\Province Name\Locality Name
\Organization Name\Unit Name\Common Name\Email Address\A challenge password\
optional company name, 提示A challenge password\optional company name可以不
填.最后因為CA需要給自己簽發證書,所以還得填些最開始時輸入的CA的私鑰密碼.
在當前目錄下會生成demoCA的目錄,內含若干文件
2.2 再生成證書申請文件
$ CA.pl -newreq
按照命令提示,依次輸入待申請證書的私鑰密碼\Country Name\Province Name\
Locality Name\Organization Name\Unit Name\Common Name\Email Address\
A challenge password\optional company name,最后兩項亦可不填.
在當前目錄下會生成證書申請文件newreq.pem和私鑰文件newkey.pem
2.3 再用2.1步生成的CA為申請文件簽名,生成證書
$ CA.pl -sign
按照命令提示,輸入CA的私鑰密碼并確認簽名,并提交到CA的簽名數據庫中,得到簽名后的
證書文件newcert.pem
2.4 裁減證書,去除證書的私鑰密碼
證書只需要包含機器可讀的部分,此外文字描述部分可以去掉,方法如下
$ openssl x509 -in newcert.pem -out www.crt
證書的私鑰提供給Apache使用,要求去除私鑰的密碼,方法如下
$ openssl rsa -in newkey.pem -out wwwkey.pem
該命令需要輸入私鑰密碼,之后生成的私鑰wwwkey.pem中就剝去密碼了
3. 配置apache2,使用簽名的證書www.crt與私鑰wwwkey.pem
添加對443端口的偵聽
Listen 443 https
加載mod_ssl.so模塊
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
配置https的虛擬服務器
NameVirtualHost *:443
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
SSLCertificateFile /etc/apache2/ssl/www.crt
SSLCertificateKeyFile /etc/apache2/ssl/wwwkey.pem
SSLEngine On
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
ErrorLog /var/log/apache2/error.log
</VirtualHost>
注意:
* NameVirtualHost *:443 后面要帶上443這個端口,普通80端口的VirtualHost要寫為
NameVirtualHost *:80
* VirtualHost總配置選現中寫為 _default_:443,表示偵聽任何網絡接口上的443端口
* 如果先前80端口的站點配置為 VirtualHost *,將它改寫為VirtualHost _default_:80
* SSLCertificateFile 指向證書文件的路徑
* SSLCertificateKeyFile 指向證書對應的私鑰文件路徑
重新啟動apache2,使用curl測試
curl https://localhost/
* SSLEngine On 啟用ssl連接
T27. VMWare Guest操作系統中時鐘總是不準確,比如Guest OS為WinXP,時鐘總是比Host OS要慢?
安裝vmware tools套件,然后復選Time synchronization between the virtual machine
and the host operating system
對于win, 在VMWare Workstation中選擇Install VMware Tools,然后在Guest Win OS中會自動
出現虛擬驅動器,打開可以看到安裝程序
對于lin, 在VMWare Workstation中選擇Install VMware Tools,然后在Guest Lin OS中會出現
/dev/hdc設備,將此文件自動掛載,即可實現
T28. 在更新Linux Kernel后,VMWare無法使用了?
Ubuntu的內核更新到2.6.20-16-386之后,VMWare Workstation活VMWare Player都無法使用了,
需要重新編譯內核模塊vmnet 和vmmon,使用vmvmware-config.pl工具,但這個工具依賴于內核
版本,
1. 下載vmware-any-any-update110.tar.gz
http://knihovny.cvut.cz/ftp/pub/vmware/
2. 解壓,運行runme.pl,程序會自動重新編譯vm內核模塊
3. 再運行VMWare Workstation 或 VMWare Player OK
T29. VMWare如何使用遠程管理接口,如果自動運行客戶操作系統?
安裝VMWare Server ,當前版本為1.0.2, 它即可桌為虛擬機服務器,自動運行客戶操作系,
通過網絡從遠程開啟,關閉,操作客戶操作系統.
提示: VMWare Server Console的注冊序列號
9AXPN-Y0QD0-24K7M-40K0M
98WMH-Y2PF1-2F7EM-4022D
注意: 1.0.2版本有個小BUG,GUEST OS通過網絡訪問HOST OS上資源速度很慢,有時還達不到
1K/s,但HOST OS訪問GUEST OS上的速度正常,比如GUEST OS為win,開放文件共享,從HOST OS
Ubuntu上Copy共享文件,速度正常.
T30. 如何創建臨時文件,而保證文件名不重復?
Bash中執行 mktemp 可以得到文件名
或者
通過<stdlib.h>中調用用戶接口
char *mktemp(char *template);
T31. 使用wget下載html文件中的所有鏈接文件?
可以通過wget的遞歸下載功能,如下
wget -r -l 1 http://www.sipfoundry.org/pub/sipX/3.6/CentOS/4/RPM/
說明:
-r 代表遞歸下載
-l num 代表遞歸的深度
-p 代表僅下載頁面必要的元素
T32. 如何創建一個tap接口供虛擬機VirtualBox使用?
對Debian/Ubuntu系統可參考VirtualBox的User Manual
1. 配置tap0接口,在/etc/network/interfaces文件中增加
auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user robbie
T33. 如何在linux下打開中文window下用zip壓縮的文件?
使用unzip,但是要加上編碼的選項-O
unzip -O cp936 zip_file_name
說明:
cp936是中文windows的默認編碼
About Development
-----------------
D1. Makefile中的.PHONY目標有什么作用?
寫法
.PHONY: TARGET
它讓.PHONY依賴的目標TARGET都能執行它的規則,而不關TARGET文件是否存在.
http://blog.csdn.net/dadoneo/archive/2010/10/25/5965088.aspx
管理Linux主機的性能看起來經常象是在變魔術一樣。許多管理員在遇到性能問題的時候常常簡單化處理,依靠硬件的更新換代,更大的內存和更強的CPU來解決問題。事實上,利用一些簡單的命令,可以發現許多管理主機的細節問題并且能迅速而簡單地解決性能問題。?
一、top
對許多管理員來說,最新學會的就是TOP命令,它可以顯示出當前運行的所有內核任務,并且提供了一些主機狀態的統計報告。默認地,TOP命令每隔五分鐘自動更新一次這個數據(這個更新間隔是可設置的)。
?
?
TOP命令的功能豐富到令人難以置信(估計很少有人使用過一半以上的功能)。一般來說你會以‘h’鍵開始,就是‘help’(說明文檔也非常精
彩)。幫助參數可以快速顯示出你能從中增加和減去的內容,同時也可以改變排序。你還可以用k來結束進程或者用r標注特別的進程。
?
Top命令顯示當天的正常運行時間、系統負載、處理器的數量、內存的使用率和哪些進程使用了大多數CPU資源(包括每個進程的大量相關信息,例如在線用戶和正在執行的命令等)。
二、vmstat ?
Vmstat命令提供給你一個當前CPU、IO、進程和內存使用率的快照。和TOP命令一樣,它自動動態刷新,并且可以用下面的命令執行:
?
$ vmstat 10
?
在這里延遲是指兩次刷新間隔的以秒為單位的時間,這里是10秒鐘。VMSTAT命令會將檢查的結果不停刷新顯示在屏幕上,直到你用CTRL-C
命令結束它(或者你也可以在執行的時候設置一個限制)。這個持續輸出的結果有時候被用來導入到文件中用來分析性能趨勢,但是我們將找到更好的方式來做這件
事情,在文章后面的部分會介紹。
?
?
第一列顯示的是處理器,
r列是待命的處理器,而b列是休眠的處理器。如果你在這里看到好多個待命的處理器,那說明你可能在某個地方遇到了性能瓶頸。第二列顯示的是內存:虛擬的,
空閑的,緩沖和緩存內存。第三列顯示的是交換存儲以及具體有多少內存在和磁盤做交換。第四列則是I/O信息,顯示了塊服務接收和發送的塊數據信息。
?
最后兩列顯示了系統和CPU相關的信息。系統列顯示的是沖突的數量和每秒鐘的交換。CPU列是顯示了特別有用的信息。每個分列顯示了一個CPU時間的百分比。這些分列如下:
?
US:運行用戶任務和代碼耗費的時間
SY:運行內核或者系統代碼耗費的時間
ID:空閑時間
WA:等待IO耗費的時間
ST:虛擬機占用的時間
?
VMSTAT命令擅長用來查詢CPU使用情況,雖然記住每個參數主要取決于持續的監控,因為對CPU進行短時間的觀察你可能無法獲知CPU真正的問題所在。你需要查看長期的運行趨勢來獲得一個確切的CPU性能信息。
三、iostat ?
我們接下來要講的命令是IOSTAT。IOSTAT命令(在UBUNTU、紅帽和FEDORA系統中都是由SYSSTAT軟件包提供的)可以提
供三個報告:CPU使用率、設備使用率和網絡文件系統使用率。如果你不加任何參數地運行該命令,它會顯示所有這三個報告,你可以通過加參數-c、-d和
-h來單獨顯示它們中的一種。
?
在上面的圖中你可以看到它們中的其中兩個報告,第一個是CPU使用率,它將各進程占用的CPU用百分比分類列出來了。你能看到用戶進程、系統進程、iowait和空閑時間等信息。
?
第二個報告是關于設備使用率,顯示了安裝在該主機上的每個設備和一些有用的信息,諸如每秒傳輸量、數據塊讀寫,并且允許你對有性能問題的設備做
標記。你可以通過添加-k或者-m參數來按照千字節或者兆字節顯示統計信息,而不是以數據塊為單位,這樣在某些情況下會更便于查閱和理解。
?
最后一個報告,沒有截圖,顯示的信息和上面介紹的設備使用率有點相似,只是對象從附件的設備換成了掛載的網絡文件系統。
?
四、free
?
下一個命令free,可以顯示主內存和交換內存的統計量。
?
你可以通過添加-t參數來顯示總的內存,或者通過添加-b參數和-m參數來用字節數顯示(默認情況是用千字節為單位)。
?
FREE命令還可以通過使用-s參數來使其以某個間隔時間持續刷新地運行:
?
$ free -s 5
?
這個命令是以每隔5秒鐘刷新一次的方式運行FREE命令并輸出結果。
五、sar ?
象我們見過的許多其它工具一樣,我們可以用sar命令來收集、查看和記錄服務器的性能數據。它比我們見過的任何類似工具都更強大,并且可以收集
和顯示長時間段的數據。在紅帽和UBUNTU上,它通過SYSSTAT包來安裝。讓我們從不添加任何參數運行SAR命令開始吧:
?
$ sar
?
?
從這里我們可以看到sar命令的基本輸出信息,包括CPU統計(每隔10分鐘一次的數據和最后的平均數據)。該信息是從一個以24小時為單位不
停收集信息的日統計文件中抓取出來的(這個文件存儲在目錄/var/log/sa/中,并且被命令為saxx這樣的格式,xx代表該數據收集的日期)。另
外它還收集關于內存、設備、網絡等的統計信息(例如,通過加-b參數可以查看塊設備統計信息,-n采查看網絡數據,-r參數看內存使用)。你還可以用-A
參數來查看所有收集的數據。
?
你還可以長時間運行sar命令然后將輸出數據導入一個文件中來收集數據。要達到這個效果,需要使用參數-o和一個文件名稱,要運行該命令的時間
間隔(記得收集數據會導致性能變差,所以最好確保這個間隔不要太短)和循環的次數-你要記錄的間隔次數。如果你不輸入循環次數,則sar命令會一直運行下
去,例如:
?
$ sar -A -o /var/log/sar/sar.log 600 >/dev/null 2>&1 &
這里我們將收集所有數據(-A),記錄到文件/var/log/sar/sar.log中,每隔600秒(或者5分鐘)收集一次,持續在后臺運行。如果接下來我們想要顯示這個數據我們可以用sar命令加上-f參數,例如:
$ sar -A -f /var/log/sar/sar.log
這是一個非常基本的sar命令介紹。用sar命令還可以得到許多很有用的數據,這能使得查看主機性能變得更加方便和有效。我建議你去查看一下sar命令的說明文檔從而獲得更詳細的方法來獲得你需要的數據。
這這篇文章中,我們看到了5個基本的用在linux主機上管理和查看性能狀態的命令工具。除此之外,去看一下其它一些工具如munin和
collected等也是非常值得的,它們不僅收集關于性能的數據,還能查看應用程序和服務等,包括使用你自己的插件等。這些工具都支持增加圖形化的輸
入,這樣可以讓你用圖形更直觀的查看你的數據。
轉自http://www.cnblogs.com/xhjsuccess/archive/2010/06/06/1752602.html