Linux筆記珍藏 SHELL/X/維護/系統/工具

火星人 @ 2014-03-23 , reply:0



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.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 ggA=strftime("%Y-%m-%d %A")

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,如下配置即可

DAV svn
SVNParentPath /srv/svnroot

重啟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

ServerAdmin webmaster@localhost

SSLCertificateFile /etc/apache2/ssl/www.crt
SSLCertificateKeyFile /etc/apache2/ssl/wwwkey.pem

SSLEngine On

DocumentRoot /var/www/

Options FollowSymLinks
AllowOverride None


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/

ErrorLog /var/log/apache2/error.log

注意:
* 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 可以得到文件名

或者

通過中調用用戶介面
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文件是否存在.




[火星人 via ] Linux筆記珍藏 SHELL/X/維護/系統/工具已經有688次圍觀

http://www.coctec.com/docs/linux/show-post-116200.html