主頁 > 知識庫 > Linux極客的56個(gè)技巧

Linux極客的56個(gè)技巧

熱門標(biāo)簽:桂林市ai電銷機(jī)器人公司 外呼系統(tǒng)怎么弄 制作地圖標(biāo)注 商店地圖標(biāo)注外賣入駐 磁力導(dǎo)航地圖標(biāo)注 地圖標(biāo)注的牌子 外呼系統(tǒng)鏈接 地址高德地圖標(biāo)注 新科火車站地圖標(biāo)注點(diǎn)

1:檢查不是由你運(yùn)行的程序

難度:高級

應(yīng)用程序:bash(譯注:UNIX或者LINUX的shell)

想象下這個(gè)場景-你已經(jīng)準(zhǔn)備好了要和同事在辦公室里對戰(zhàn)一局快速的Crack Attack(譯注:一款免費(fèi)的OpenGL游戲,類似俄羅斯方塊),不料卻發(fā)現(xiàn),當(dāng)你正準(zhǔn)備要擊敗你這個(gè)傲慢的下屬時(shí),方塊卻停止了-是什么讓你的機(jī)器變得這么慢?這肯定是因?yàn)槠渌挠脩暨\(yùn)用他們嫻熟的經(jīng)驗(yàn)來盜取你寶貴的CPU時(shí)間、服務(wù)器或者其他的詭異方式,真煩人!

好,讓我們列舉出系統(tǒng)中所有不是由你運(yùn)行的程序!

ps aux | grep -v `whoami`

或者,更巧妙些的是,為什么不列出最占用時(shí)間的前十個(gè)程序呢:

ps aux--sort=-%cpu | grep -m 11 -v `whoami`

也許最好使用root權(quán)限來運(yùn)行這條指令,因?yàn)檫@樣可以過濾出大部分活躍的后臺程序。現(xiàn)在你有了這些信息,你可以終止他們的進(jìn)程,但是更“卑鄙”的是反復(fù)地在他們的桌面上運(yùn)行xeyes(譯注:Linux下的一條好玩的命令)!

2:在多個(gè)文件中替換掉相同的文本

難度:中等

應(yīng)用程序:find(譯注:Linux下的一條命令)/Perl

如果你有個(gè)文件,想在多個(gè)位置進(jìn)行替換,這里有很多方法來實(shí)現(xiàn)。調(diào)用test[someting]把當(dāng)前目錄里所有文件中的Windows替換成Linux,你可以像這樣運(yùn)行它:

perl -i -pe 's/Windows/Linux/;' test*

要替換當(dāng)前目錄以及下層目錄里所有文件中的Windows為Linux,你可以這樣運(yùn)行:

find . -name '*.txt' -print | xargs perl -pi -e's/Windows/Linux/ig' *.txt

或者如果你更需要讓它只作用于普通文件上:

find -type f -name '*.txt' -print0 | xargs --null perl -pi -e 's/Windows/Linux/'

節(jié)省了大量的時(shí)間并且獲得了高水平的大師等級!

3:合并一個(gè)不穩(wěn)定的終端

難度:簡單

應(yīng)用程序:bash

我們都已經(jīng)做過這件事了-偶爾使用less或者cat來列出一個(gè)文件,或者以瀏覽二進(jìn)制文件而結(jié)束,這通常包含各種可以輕易弄亂你的終端顯示的控制代碼、警報(bào)聲、一些有趣的字符,以及一些奇怪的顏色組合,最后,你的字體將會被一些難以辨認(rèn)的字符所替代,而你卻不知道該怎么辦。顯然bash仍然繼續(xù)工作著,但是你就是不能明白到底發(fā)生了什么!發(fā)送一個(gè)初始化命令給這個(gè)終端:

reset

然后一切就再次恢復(fù)正常了。

4:創(chuàng)造Mozilla關(guān)鍵詞

難度:簡單

應(yīng)用程序:Firefox/Mozilla

在瀏覽器上的一個(gè)有用的特征是,它們有一種能力,可以通過輸入gg onion來通過Google搜索onion這個(gè)詞的一切。同一功能在Mozilla上也可實(shí)現(xiàn),通過單擊Bookmarks(書簽)>Manage Bookmarks(管理書簽)然后添加一個(gè)新的書簽,添加的URL就像這樣:

http://www.google.com/search?q=%s

現(xiàn)在選擇書簽編輯器中的條目并且點(diǎn)擊Properties(屬性)按鈕,現(xiàn)在輸入一個(gè)類似gg的關(guān)鍵字(或者可以是你選擇的任何字符)就行了。在URL中的%s將被關(guān)鍵字之后的文本內(nèi)容替代。你可以用這種方法向其他一些依賴你當(dāng)前URL信息的網(wǎng)站發(fā)送請求。

或者,右擊一個(gè)搜索區(qū)域然后選擇菜單選項(xiàng)“為這個(gè)搜索添加一個(gè)關(guān)鍵詞…”。接下來的會話將允許你使用一個(gè)指定的關(guān)鍵詞。

5:運(yùn)行多種X會話

難度:簡單

應(yīng)用程序:X

如果你給別人分享了你的Linux box(),而厭煩了不斷的登入、登出,當(dāng)你知道了這不是必要的時(shí)候,可能會如釋重負(fù)。假設(shè)你的電腦以圖形模式啟動(runlevel 5),通過同時(shí)按下Control+Alt+F1鍵-你將得到一個(gè)登陸提示。輸入你的登錄名以及密碼然后執(zhí)行:

startx -- :1

來進(jìn)入你的圖形環(huán)境。按下Ctrl+Alt+F7來回到在你之前的用戶會話,如果想回到你自己的用戶會話則按下Ctrl+Alt+F8。

你可以重復(fù)使用這項(xiàng)技巧:F1鍵到F6鍵可以識別六個(gè)控制臺會話,而F7到F12可以識別六個(gè)X會話。警告:盡管這在多數(shù)情況下是適用的,但是不同的變種可能用不同的方式來實(shí)現(xiàn)這項(xiàng)功能。

6:更快地瀏覽

難度:簡單

應(yīng)用程序:KDE(譯注:一種Linux的桌面環(huán)境)

KDE是一個(gè)雖然小眾,但是在提升你的網(wǎng)頁瀏覽經(jīng)驗(yàn)方面很有用的選擇。啟動一個(gè)KDE控制中心,然后從工具條中選擇System(系統(tǒng))>KDE performance?,F(xiàn)在你可以選擇預(yù)加載瀏覽器實(shí)例。實(shí)際上,這意味著瀏覽器在開機(jī)的時(shí)候就開始運(yùn)行,在你用之前都保持隱藏狀態(tài)。當(dāng)你想要使用它的時(shí)候,它幾乎是瞬間出現(xiàn)。

7:簡單地備份你的網(wǎng)站

難度:簡單

應(yīng)用程序:Backups

如果你想要從一臺電腦上備份一個(gè)目錄,但你僅僅想要復(fù)制改變的文件到它的備份而不是復(fù)制所有的東西到各自的備份,你可以使用工具rsync來實(shí)現(xiàn)它。你需要在這個(gè)遠(yuǎn)程的源備份計(jì)算機(jī)上有一個(gè)賬戶。下面是這條命令:

rsync -vare ssh jono@192.168.0.2:/home/jono/importantfiles/* /home/jono/backup/

這樣我們就備份了192.168.0.2地址上/home/jono/importantfiles/目錄下的所有文件到當(dāng)前機(jī)器上的/home/jono/backup目錄下。

8:使你的時(shí)鐘保持準(zhǔn)時(shí)

難度:簡單

應(yīng)用程序:NTP

如果你發(fā)現(xiàn)電腦上的時(shí)鐘似乎與時(shí)間脫軌了,你可以使用一個(gè)特殊的NTP工具,來確保它準(zhǔn)到只有穿實(shí)驗(yàn)服的人才會需要的程度。你需要安裝ntpdate工具,它通常包含在NTP包中,然后你就可以與NTP服務(wù)器保持同步了:

ntpdate ntp.blueyonder.co.uk

可以在www.eecis.udel.edu/~mills/ntp/clock1b.html上獲得相應(yīng)的NTP服務(wù)器的列表。如果你修改了你的開機(jī)程序并且在腳本中包含這些命令,就可以確保無論何時(shí)你啟動電腦都是完全準(zhǔn)時(shí)的。你還可以運(yùn)行一個(gè)定時(shí)任務(wù)來校對時(shí)間。

9:找到最大的文件

難度:簡單

應(yīng)用程序:Shell

計(jì)算機(jī)中一個(gè)常見的問題是,你可能想刪一部分大的文件(類似音頻或視頻片段)。如下你可以找到當(dāng)前目錄中最大的那個(gè)文件:

ls -lSrh

“r”的作用是將大的文件列在后面,而“h”則是給出易于人們閱讀的輸出(MB或者諸如此類)。你也可以搜尋最大的MP3/MPEG文件:

ls -lSrh *.mp*

你也可以通過下面這條命令搜尋最大的目錄:

du -kx | egrep -v "\./.+/" | sort -n

10:Nautilus快捷鍵

難度:簡單

應(yīng)用程序:Nautilus(譯注:Linux圖形界面中的一個(gè)文件管理器)

盡管很多文件管理器近日來被設(shè)計(jì)為使用鼠標(biāo)進(jìn)行管理,但有時(shí)用鍵盤還是方便些。Nautilus有一些鍵盤快捷鍵,可以使你快速瀏覽文件:

打開一個(gè)定位文件 – Ctrl+L

打開父文件夾 – Ctrl+Up

用方向鍵來瀏覽當(dāng)前文件夾

你也可以使用‘emblems’來定制文件圖標(biāo)。這里有少量的應(yīng)用于個(gè)別文件或者組的圖象展示。打開Edit(編輯) > Backgrounds and Emblems(背景和符號)菜單條目,然后拖放你想要的圖片即可。

11:整理你的數(shù)據(jù)庫

難度:簡單

應(yīng)用程序:MySQL

無論何時(shí)你改變一個(gè)MySQL數(shù)據(jù)庫的結(jié)構(gòu),或者從中刪掉大量的數(shù)據(jù),文件都有可能被分散,并導(dǎo)致一些性能損失。尤其是當(dāng)運(yùn)行查詢命令時(shí)這個(gè)情況最容易發(fā)生。每當(dāng)你要改動數(shù)據(jù)庫的時(shí)候,記得運(yùn)行這個(gè)優(yōu)化器:

mysqlcheck -o databasename>

也許你會發(fā)現(xiàn),如果你使用VARCHAR文件,有必要定期的整理你的數(shù)據(jù)庫表:這個(gè)變長列(variable-length columns)是非常傾向于分裂的。

12:更快的郵件

難度:簡單

應(yīng)用程序:KMail

連三秒鐘都不想花費(fèi)在找郵箱客戶端上面?不想被桌面上堆積成山日漸腐爛的圖標(biāo)搞得找不到鼠標(biāo)指針?不管你正在KDE里干什么,按幾下鍵盤就可以發(fā)郵件了。輸入:

mailto:plop@ploppypants.com

按下return,KMail將會自動啟動,為你的至理名言做好準(zhǔn)備。你甚至不需要填寫完整的郵件地址。這對Internet地址也是有效的:嘗試輸入www.slashdot.org來啟動瀏覽器。

13:同化你的構(gòu)造

難度:簡單

應(yīng)用程序:GCC

如果你運(yùn)行一個(gè)擁有適量RAM的多處理機(jī)系統(tǒng)(SMP),你會發(fā)現(xiàn),在寫代碼時(shí),運(yùn)行一個(gè)parallel make很有好處。與按照默認(rèn)方式運(yùn)行make并執(zhí)行serial builds相比,parallel build 是一種很有效的改善方法。讓make在building的時(shí)候允許同時(shí)存在多個(gè)child,用如下的-j轉(zhuǎn)換即可:

make -j4; make -j4 modules

14:節(jié)省電池電源

難度:中等

應(yīng)用程序:hdparm

很可能你已經(jīng)對使用hdparm來調(diào)整一個(gè)硬件驅(qū)動很熟悉了,但是它還能節(jié)約你的筆記本的電池壽命,或者通過降低硬盤轉(zhuǎn)速來使生活更寧靜。

hdparm -y /dev/hdbhdparm -Y /dev/hdbhdparm -S 36 /dev/hdb

按順序,這些命令將讓硬件轉(zhuǎn)換成Standby(待命)模式,再轉(zhuǎn)換成Sleep(睡眠)模式,并且最終設(shè)置Automatic(自動)旋轉(zhuǎn)超時(shí)。這個(gè)結(jié)尾包含一個(gè)以5秒為單位的一塊塊數(shù)字變量(例如,值為12就等同于一分鐘)。

順便說一下,這個(gè)降低旋轉(zhuǎn)時(shí)間至5秒為單位的習(xí)慣真值得拿一個(gè)特別的用戶友好獎(jiǎng)——這個(gè)值的設(shè)置也許有什么歷史原因,但我們不知道。如果你恰好知道為什么,請來信告知我們!

15:無線速度管理

難度:中等

應(yīng)用程序:iwconfig

一個(gè)radio發(fā)送/接受設(shè)備和其他設(shè)備間的傳輸速度,取決于有多少可用信號。在信號減弱的時(shí)候如需維持傳輸,就需要降低radio的傳輸速度。一般情況下,radio都會自己找到可用信號,并自動選擇最快的速度。

在邊緣區(qū)域中,信號強(qiáng)度勉強(qiáng)夠用,這時(shí)候就可能因radio不斷調(diào)試連接速度而造成不必要的包丟失。如果不能加強(qiáng)天線增益,或移動設(shè)備位置來獲取更充足的信號,可以嘗試強(qiáng)制讓card同步到一個(gè)較低的速率。這樣,radio就會減少調(diào)試頻率,實(shí)際上,還會比使用持續(xù)觸發(fā)的鏈接傳輸?shù)每煲恍?。不同的?qū)動器有不同的鏈接速度設(shè)置方法。在Linux中,可用iwconfig來設(shè)置速度:

iwconfig eth0 rate 2M

這個(gè)指令能強(qiáng)制使廣播總是同步在2Mbps,即使還存在其他可用速度。你也可以設(shè)置一個(gè)明確的速度作為上限,允許卡自動按照任何低于這個(gè)上限的速度來工作,但是不能高于它。例如,你可以把它作用于上文舉例的連接上:

iwconfig eth0 rate 5.5M auto

如上的指令可以讓驅(qū)動器將速度上限設(shè)為5.5Mbps,只慢不快。想要將card恢復(fù)為全自動縮放,只需要制定它自己自動工作。

iwconfig eth0 rate auto

通??ㄔ?Mbps時(shí)比它們在11Mbps時(shí)可以延伸的更遠(yuǎn)。在這兩種速率之間,Orinoco卡有12dB的差別,即降低數(shù)據(jù)速率可獲得的潛在傳輸距離的四倍。

16:疏通開端口

難度:中等

應(yīng)用程序:netstat

要獲取在Linux服務(wù)器上處于監(jiān)聽狀態(tài)的網(wǎng)絡(luò)服務(wù)器的列表,可使用netstat程序:

root@catlin:~# netstat -lnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN 698/perl tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 217/httpd tcp 0 0 10.42.3.2:53 0.0.0.0:* LISTEN 220/named tcp 0 0 10.42.4.6:53 0.0.0.0:* LISTEN 220/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 220/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 200/sshd udp 0 0 0.0.0.0:32768 0.0.0.0:* 220/named udp 0 0 10.42.3.2:53 0.0.0.0:* 220/named udp 0 0 10.42.4.6:53 0.0.0.0:* 220/named udp 0 0 127.0.0.1:53 0.0.0.0:* 220/named udp 0 0 0.0.0.0:67 0.0.0.0:* 222/dhcpd raw 0 0 0.0.0.0:1 0.0.0.0:* 7 222/dhcpd

如上消息告訴你PID為698的進(jìn)程是一個(gè)綁定在5280端口的Perl進(jìn)程。如果你不是超級用戶,系統(tǒng)將不會顯示哪個(gè)程序是運(yùn)行在哪個(gè)端口上的。

17:更快的硬件驅(qū)動

難度:高級

應(yīng)用程序:hdparm

也許你已經(jīng)知道hkparm工具可以用于測試硬盤速度和更改一些設(shè)置。它還可以用于優(yōu)化驅(qū)動性能,并且開啟一些默認(rèn)關(guān)閉的功能。在我們開始之前,敬告您,改變驅(qū)動選項(xiàng)可能會造成數(shù)據(jù)損壞,所以首先請備份你所有的重要數(shù)據(jù)。如下命令可以用來測試速度:

hdparm -Tt /dev/hda

你將會看到類似于這樣的東西:

/dev/hda:
Timing buffer-cache reads: 128 MB in1.64 seconds =78.05 MB/secTiming buffered disk reads:64 MB in 18.56 seconds = 3.45MB/sec

現(xiàn)在我們可以嘗試讓它提速。找出你的驅(qū)動目前設(shè)置使用的是哪個(gè)選項(xiàng),然后傳遞給hdparm這個(gè)硬件的名稱:

hdparm /dev/hda /dev/hda: multcount=16 (on) I/O support=0 (default 16-bit) unmaskirq=0 (off) using_dma=0 (off) keepsettings =0 (off) readonly =0 (off) readahead=8 (on) geometry = 40395/16/63, sectors = 40718160, start = 0

這相當(dāng)于一個(gè)默認(rèn)設(shè)置。多數(shù)的Linux發(fā)行版本都會選擇一個(gè)可以運(yùn)行在多數(shù)硬件上的安全選項(xiàng)。為了獲得更快的速度,你可能想要激活dma模式,然后當(dāng)然要調(diào)整I/O支持。多數(shù)現(xiàn)代計(jì)算機(jī)支持模式3,這是一個(gè)近乎雙倍通量的32位轉(zhuǎn)換模式。你也可以嘗試:

hdparm -c3 -d1/dev/hda

然后返回這個(gè)速度,查看一下不同。檢驗(yàn)?zāi)愕挠布С帜男┠J?,然后可以在hdparm的man手冊中學(xué)習(xí)如何設(shè)置它們。

18:在你手中的可用時(shí)間

難度:高級

應(yīng)用程序:Perl

對計(jì)算來說,浪費(fèi)的資源就是那些本可以派上更好的用場的資源。不管你還運(yùn)行了什么別的程序,為什么不嘗試運(yùn)行一個(gè)進(jìn)程,在終端標(biāo)題欄實(shí)時(shí)顯示當(dāng)前的平均負(fù)載呢?

將這個(gè)存為一個(gè)腳本并命名為tl,然后把它存到你的~/bin目錄下:

#!/usr/bin/perl -wuse strict;$|++;my $host=`/bin/hostname`;chomp $host;while(1) {open(LOAD,"/proc/loadavg") || die "Couldn't open /proc/loadavg: $!\n";my @load=split(/ /,LOAD>);close(LOAD);print "$host: $load[0] $load[1] $load[2] at ", scalar(localtime);print "07";sleep 2;}

如果你想用用load average和你登陸的機(jī)器的當(dāng)前時(shí)間,來替換titlebar名字,與西寧tl即可。它會很恰當(dāng)?shù)脑诤笈_運(yùn)行,即使你運(yùn)行一個(gè)類似Vim的交互式程序。

19:不使用X完成抓取一次屏幕截圖

難度:簡單

應(yīng)用程序:Shell

確實(shí)有很多屏幕捕獲的工具,但是他們大部分都是基于X的。這導(dǎo)致了一個(gè)問題,當(dāng)你運(yùn)行一個(gè)X應(yīng)用程序時(shí),將會干擾這個(gè)你想要抓取的應(yīng)用程序——或許是一個(gè)游戲或者甚至是一個(gè)Linux安裝程序。但如果你使用了超棒的ImageMagick(譯注:一個(gè)開源的圖片處理工具集和開發(fā)包)導(dǎo)入命令,你就可以通過控制臺來對X模塊進(jìn)行抓取。很簡單,打開一個(gè)虛擬終端(例如Ctrl+Alt+F1)然后輸入如下:

chvt 7; sleep 2; import -display :0.0 -window root sshot1.png; chvt 1;

chvt命令改變了虛擬終端,而sleep命令給重繪屏幕提供了一個(gè)時(shí)間。導(dǎo)入命令會在最后的chvt命令把你再次打回到虛擬終端之前,捕獲所有的顯示并且保存到一個(gè)文件中。請確保你把所有的命令都輸入在同一行中。

這是甚至在Linux安裝程序上也是有效的,很多安裝程序都只留下一個(gè)控制臺而轉(zhuǎn)去后臺運(yùn)行——一個(gè)一流的到處運(yùn)行的屏幕抓取器只需要加載一些它所需要的庫到一個(gè)floppy(譯注:磁盤)/CD上。

20:遠(yuǎn)程訪問你的程序

難度:簡單

應(yīng)用程序:X

如果你想要躺在床上使用你的Linux筆記本從你的Window機(jī)器上訪問你的應(yīng)用程序,可以使用SSH來實(shí)現(xiàn)。首先你需要在/etc/ssh/sshd_config中激活以下設(shè)置:

X11Forwarding yes

現(xiàn)在我們可以使用如下命令在192.168.0.2上運(yùn)行GIMP:

ssh -X 192.168.0.2 gimp

21:用到man手冊

難度:簡單

應(yīng)用程序:man

如果你在一個(gè)特殊的項(xiàng)目或者命令中需要幫助,man手冊是一個(gè)好的入門。通常你使用mancommand>來訪問man手冊,但是你也可以通過一個(gè)特殊的man頁描述的關(guān)鍵詞來搜索man頁。舉例來說,搜索所有詳述login的man頁:

man -k login

當(dāng)你訪問了一個(gè)man頁,你也可以使用斜杠鍵來搜索一個(gè)特定的詞而不是用man頁本身。在你的鍵盤上按下“ / ”然后輸入搜索項(xiàng)是非常簡單的。

22:和你的醫(yī)生對話

難度:簡單

應(yīng)用程序:Emacs

如果說Emacs只是個(gè)文本編輯器,就好像說Triumph只是個(gè)摩托車,或者說世界杯就是個(gè)四年一度的足球賽。好吧,它確實(shí)是個(gè)文本編輯器,但那只是一小~~~部分。舉個(gè)栗子?打開編輯器,按下Esc鍵,緊接著按下X,然后進(jìn)入doctor:你將會進(jìn)入到一個(gè)離奇的對話中,有一個(gè)假想的但是熟練的精神治療師。如果你想要磨蹭你的時(shí)間,這是一個(gè)很好的方法。

Esc-X tetris

會將你的‘編輯器’轉(zhuǎn)變成一個(gè)老的、受歡迎的游樂場游戲。

瘋狂到此為止了嗎?絕對沒有!檢查你的發(fā)行版本的包,列出他們在你的Emacs上捆綁的其他功能:我們看到有國際象棋,Perl集成,IRC chat(譯注:一種聊天工具),法文翻譯,HTML轉(zhuǎn)換,一個(gè)Java開發(fā)環(huán)境,靈巧的編輯,甚至還有一個(gè)被稱為“semantic bovinator”(語義糾錯(cuò))的東西。我們確實(shí)對最后一個(gè)能做什么的毫無頭緒,但是我們斷定無論如何你都敢嘗試它!(請先閱讀免責(zé)聲明!

23:生成包關(guān)聯(lián)圖表

難度:簡單

應(yīng)用程序:Debian

Debian系統(tǒng)最受爭議的是它能安裝一個(gè)包,并自動滿足其附屬(dependency)。如果你想要以圖形形式表現(xiàn)這些包之間的關(guān)系(這對于了解系統(tǒng)如何協(xié)調(diào)工作是非常有用的),你可以使用Debian中非自由的Graphviz包(apt-get install graphviz)然后使用如下命令:

apt-cache dotty > debian.dot

這個(gè)命令會生成圖片文件并存入dotty:

dotty debian.dot

24:卸載忙碌狀態(tài)的驅(qū)動

難度:簡單

應(yīng)用程序:bash

你應(yīng)該很熟悉這種情況-嘗試去卸載一個(gè)驅(qū)動,但是系統(tǒng)卻告訴你它處于忙碌狀態(tài)。但是什么程序在占用呢?一個(gè)短小的單行代碼將告訴你:

lsof +D /mnt/windows

這將返回命令和進(jìn)程ID以及任何正在訪問/mnt/windows目錄的任務(wù)。接下來你就可以定位它們,或者使用kill命令來終結(jié)它們。

25:文本文件的轉(zhuǎn)換

難度:簡單

應(yīng)用程序:recode

recode是一個(gè)小而實(shí)用并且可以幫你在不同平臺上使用文本文件時(shí)節(jié)省大量精力的工具。它的缺陷主要是源于換行符。一些系統(tǒng)使用一個(gè)換行字符,而其他的一些系統(tǒng)使用回車。更多其他的系統(tǒng)兩個(gè)都用。最后的結(jié)果就是,如果你從一個(gè)平臺移動文本文件到另一個(gè)平臺上,你會有太多或太少的換行符,還會有很多奇怪的字符殘留。

然而,recode命令的參數(shù)是有一些神秘的,所以為什么不把這種技巧和HACK 26結(jié)合到這個(gè)功能中,然后建立一些有用的別名:

alias dos2unix='recode dos/CR-LF..l1'alias unix2win='recode l1..windows-1250'alias unix2dos='recode l1..dos/CR-LF'

還有很多recode選項(xiàng)-它們確實(shí)可以轉(zhuǎn)換大量字符間的設(shè)置。查閱man手冊來獲取更多信息。

26:只列出今天的文件

難度:簡單

應(yīng)用程序:Various

你可能熟悉這個(gè)問題,今天早些時(shí)候你創(chuàng)建了一個(gè)文本文檔,而現(xiàn)在立刻就需要它。然而,你想不起來你給它起了個(gè)什么可笑的名字,作為一個(gè)熟練的geek,你的家文件夾被836個(gè)不同的文件填滿了。那你要如何找到它呢?哈哈,這里有很多方法,但是這個(gè)小技巧告訴你管道和結(jié)合使用兩個(gè)強(qiáng)力的shell命令是多么有效:

ls -al --time-style=+%D | grep `date +%D`

ls命令的參數(shù)使得這個(gè)日期戳以一種特殊的方式呈現(xiàn)。這個(gè)狡猾的位就是這樣傳遞給grep來輸出的。grep的參數(shù)是它自己的命令(因?yàn)槭堑挂査詧?zhí)行),用來將當(dāng)前的日期替代成匹配的字符。你可以輕易的修改它來搜索其他特別的日期、時(shí)間、文件大小或者任何東西。結(jié)合它與HACK 26是非常節(jié)省輸入的。

27:避免常見的拼寫錯(cuò)誤和長命令

難度:簡單

應(yīng)用程序:Shell

這個(gè)alias命令對于設(shè)立長命令的快捷鍵是有用的,或者說是聰明的事情。HACK 25中,我們可以通過以下命令來得到一個(gè)新命令,lsnew:

alias lsnew=" ls -al --time-style=+%D | grep `date +%D` "

然而alias還有其他的用處。例如,解決常見的拼寫錯(cuò)誤。有多少次你在改變父目錄時(shí)忽略了空格?不用再苦惱了!

alias cd..="cd .."

作為一種選擇,試試重寫一些已經(jīng)存在的命令怎么樣?

alias ls="ls -al"

像我們一樣節(jié)省一些按鍵,或者你總是想要完成清單。

要為每一個(gè)會話激活這些快捷鍵,只用添加alias命令到你的用戶里家文件目錄中的.bashrc文件中。

28:更改Mozilla的秘密設(shè)置

難度:簡單

應(yīng)用程序:Mozilla

如果你想要改變Mozilla操作,但是在首選項(xiàng)中并沒有提供可以點(diǎn)擊的選項(xiàng)來幫助你,這里有一個(gè)特殊的模式可以讓你在Mozilla中激活,這樣你就能改變一切了。要訪問它,在地址欄中輸入這些:

about:config

這樣你就可以改變表中文件里每一個(gè)你感興趣的設(shè)置的值。

其他有趣的模式包括總體信息(about:),插件詳情(about:plugins),開發(fā)者信息(about:credits)和一些總體情況(about:mozilla)。

29:一個(gè)星星的背景

難度:簡單

應(yīng)用程序:KStars

你可能已經(jīng)玩過KStars了,但是如何創(chuàng)造一個(gè)每次當(dāng)你啟動時(shí)就更新的KStars背景圖呢?

KStars可以和–dump switch一起運(yùn)行,它可以從你的啟動設(shè)置中打印出一幅圖片,但一點(diǎn)也不會增加GUI的負(fù)載。你可以寫一個(gè)腳本來運(yùn)行它生成一個(gè)每天都更換的桌面圖片(或者你可以只是使用這個(gè)方法生成圖片)。

像這樣使用KStars:

kstars --dump --width 1024 --height 768 --filename = ~/kstarsback.png

你可以把它添加到~/.kde/Autostart文件夾的一個(gè)腳本中,一啟動就開始運(yùn)行。在瀏覽器中找到這個(gè)文件,把它拖到桌面上然后選擇“設(shè)置為墻紙”,將它作為一個(gè)隨機(jī)生成的背景圖來使用。

30:直接打開一個(gè)SVG

難度:簡單

應(yīng)用程序:Inkscape

你可以通過shell運(yùn)行Inkscape,然后直接通過一個(gè)URL來立刻編輯一張圖片。只用輸入:

inkscape http://www.somehost.com/graphic.svg

記得要另存為一下!

31:不用編輯器來進(jìn)行編輯

難度:中等

應(yīng)用程序:好多

通常非常長的文件是很難用文本編輯器來進(jìn)行操作的。如果你不時(shí)地要做這件事,可能你會發(fā)現(xiàn)用某些趁手的命令行工具會更快一些,就像下面這個(gè)例子一樣。

從文件file1中打印第一列和第三列到文件file2中,我們可以使用awk:

awk '{print $1, $3}' file1 > file2

只輸出file1中第八列到第十五列中的字符,我們可以使用cut:

cut -c 8-15 file1 > file2

要使用單詞word2來替換文件file1中的單詞word1,我們可以使用sed命令:

sed "s/word1/word2/g" file1 > file2

通常這是一個(gè)比打開文本編輯器更快得到結(jié)果的方式。

32:只備份選中的文件

難度:中等

應(yīng)用程序:tar

想要使用tar來備份一個(gè)目錄中的某一文件?你可以使用-T標(biāo)志。首先,用你想要備份的文件來創(chuàng)建一個(gè)文件:

cat >> /etc/backup.conf# /etc/passwd# /etc/shadow# /etc/yp.conf# /etc/sysctl.confEOF

然后運(yùn)行tar,并使用-T標(biāo)志指向剛剛創(chuàng)建的文件。

tar -cjf bck-etc-`date +%Y-%m-%d`.tar.bz2 -T /etc/backup.conf

現(xiàn)在你已經(jīng)備份好了。

33:在文件中合并列

難度:中等

應(yīng)用程序:bash

在文件中拆分列是非常簡單的,合并它們稍微復(fù)雜一點(diǎn)。下面是一個(gè)簡單的完成這項(xiàng)工作的腳本:

#!/bin/shlength=`wc -l $1 | awk '{print $1}'`count=1[ -f $3 ]  echo "Optionally removing $3"  rm -i $3while [ "$count" -le "$length" ] ; doa=`head -$count $1 | tail -1`b=`head -$count $2 | tail -1`echo "$a$b" >> $3count=`expr $count + 1`done

給這個(gè)腳本命名為merge.sh并且如下運(yùn)行它:

chmod u+x merge.sh

現(xiàn)在,如果你想要合并file1和file2中的列到file3,下面是執(zhí)行方法:

/path/to/merge.sh file1 file2 file3

/path/to必須被你文件系統(tǒng)中的merge.sh位置所替代。

34:大小寫敏感

難度:中等

應(yīng)用程序:bash

有些時(shí)候,一個(gè)詞在不同操作系統(tǒng)間沒有任何區(qū)別,在Linux中,“Command”和“command”是不同的東西。當(dāng)從Windows移動文件到Linux中時(shí)會造成一些麻煩。tr是一個(gè)小的shell功能,可以用于改變一堆文件。

#!/bin/shfor i in `ls -1`; dofile1=`echo $i | tr [A-Z] [a-z] `mv $i $file1 2>/dev/nulldone

通過執(zhí)行這個(gè),F(xiàn)ILE1和fiLe2將被分別重命名為file1和file2.

35:Emacs中的宏指令

難度:中等

應(yīng)用程序:Emacs

當(dāng)編輯文件時(shí),你通常會發(fā)現(xiàn)那些任務(wù)都是冗長和重復(fù)的,所以為了節(jié)約你的時(shí)間,你應(yīng)該錄制一個(gè)宏指令。在Emacs中,你將必須經(jīng)歷以下步驟:

1.按下 Ctrl+X 來開始一個(gè)記錄。

2.插入所有你想要的按鍵和命令。

3.當(dāng)你結(jié)束時(shí)按下Ctrl+X。

現(xiàn)在,你可以用以下命令來執(zhí)行:

Ctrl -u number> Ctrl -x e

number>是你想執(zhí)行宏指令的次數(shù)。如果你輸入的值為0,這個(gè)宏指令將被一直執(zhí)行直到文件的結(jié)束。Ctrl -x e等同于Ctrl -u 1 Ctrl-x e。

36:簡單的垃圾郵件清理

難度:中等

應(yīng)用程序:KMail

垃圾郵件,或者不請自來的大批郵件,已經(jīng)是個(gè)很普遍的問題,出于必要,現(xiàn)在幾乎每個(gè)人都有某種形式的垃圾郵件保護(hù)。很多ISP包含垃圾郵件過濾,但是它并沒有被設(shè)置的太過主動,而且通常很多都是簡單的標(biāo)記垃圾郵件,然后讓它進(jìn)來(ISP可不想因?yàn)閬G失了你的郵件而被責(zé)備)。

所以,你在客戶端上可能已經(jīng)設(shè)置了反垃圾郵件的東西,要讓它運(yùn)行得更好,你可以寫一些過濾器來移除被標(biāo)記的垃圾郵件。標(biāo)簽是作為標(biāo)題包含進(jìn)來的。在KMail中,你可以只創(chuàng)建一個(gè)快速過濾器來將你的郵件裝箱,或者干脆把它放到垃圾文件夾中。精確標(biāo)題的使用將決定于你的ISP使用的軟件,但是通常都是像SpamAssassin這樣系統(tǒng)的類似X-Spam-Flag = YES。

在KMail中簡單創(chuàng)建一個(gè)過濾器,選擇Match Any of the Following(匹配下面的任何一個(gè))然后輸入標(biāo)題細(xì)節(jié)和你需要的動作。應(yīng)用過濾器到即將到來的郵件上,然后你的垃圾郵件的一半將不會再來打擾你了。

37:閱讀OOo文檔但不使用OOo

難度:中等

應(yīng)用程序:OpenOffice.org(譯注:一套跨平臺辦公室軟件套件)

你曾經(jīng)有沒有過拿到一個(gè)OOo文檔,但是沒有OpenOffice.org來閱讀?所以你就把它保存成普通的文本文件(.txt),但是被 StarOffice .sxw 格式所替代?這個(gè)文本文件可以得到拯救。首先,這個(gè)sxw文件是一個(gè)壓縮文檔,所以解壓它:

unzip myfile.sxw

你想要的是名為’content.xml’的文件。不幸的是,它充滿了xml的標(biāo)簽以至于非常難以辨認(rèn),所以要用一些Perl魔法將它們過濾出去:

cat content.xml | perl -p -e"s/[^>]*>/ /g;s/\n/ /g;s/ +/ /;"

這可能丟失了很多格式,但是至少現(xiàn)在它是可以閱讀的。

38:搜索和執(zhí)行

難度:中等

應(yīng)用程序:find

find命令并不只是在尋找文件方面很有用,它在處理以下問題時(shí)也是非常有用的。這里有一個(gè)簡短的例子。

假設(shè)我們有很多的壓縮文件,現(xiàn)在我們想找到所有的壓縮文件:

find . -name '*.gz'

將會定位出所有當(dāng)前路徑下的gzip文檔。但是假設(shè)我們想要檢查它們是否是有效文檔,gunzip -vt選項(xiàng)將會幫我們實(shí)現(xiàn)這個(gè),我們還可以機(jī)智地使用xargs結(jié)合這兩個(gè)操作:

find . -name '*.gz' | xargs gunzip -vt

39:正確使用whois服務(wù)器

難度:中等

應(yīng)用程序:whois

whois命令在追捕Internet上的惡棍以及給他們提供服務(wù)的ISP都是非常有用的。不幸的是,有很多whois服務(wù)器,如果你的反搜索一個(gè)域名,通常你不得不用一個(gè)指定的他們使用的TLD。然而,一些whois代理將自動轉(zhuǎn)送你的查詢到正確的服務(wù)器上。其中之一可以在http://whois.geektools.com/上獲得。

whois -h whois.geektools.complop.info

40:驅(qū)動掛載到哪里了?

難度:中等

應(yīng)用程序:bash

人們常碰到的一個(gè)問題是,你剛接通電源時(shí),就有太多的可掛載外設(shè)(USB驅(qū)動,flash內(nèi)存卡,USB鍵驅(qū)動)消耗光了驅(qū)動?

實(shí)際上,所有的驅(qū)動都調(diào)用一個(gè)驅(qū)動——就像usb-storage,會在日志中存儲很多有用的信息。嘗試:

dmesg | grep SCSI

這將從dmesg輸出過濾出指定的驅(qū)動規(guī)格。你可能發(fā)現(xiàn)一些這樣的文本:

SCSI device sda: 125952 512-byte hdwr sectors (64 MB)

這個(gè)是說你的外設(shè)是在sda上。

41:自動執(zhí)行USB裝置

難度:高級

應(yīng)用程序:hotplug腳本

當(dāng)添加一個(gè)特殊的外設(shè)時(shí)想要運(yùn)行一個(gè)指定的應(yīng)用程序?USB hotplug后臺進(jìn)程可以幫你!當(dāng)有USB裝置添加到系統(tǒng)中時(shí),這個(gè)服務(wù)就會得到通知。對于需要內(nèi)核驅(qū)動的裝置,hotplug后臺進(jìn)程將在/etc/hotplug/usb/下調(diào)用一個(gè)同名的腳本,例如,這里的一個(gè)名為usb-storage的腳本。你可以直接在這個(gè)腳本的后面添加你自己的命令(或者更好的是,在它的最后添加一行來讓腳本在別的地方執(zhí)行)。那么你就可以播放音樂,autosync文件(譯注:影像文件),搜尋圖片或者其他什么的。

對于不依賴于內(nèi)核驅(qū)動的裝置,有一個(gè)檢查表,可以用來匹配USB產(chǎn)品和制造商ID。很多發(fā)行版已經(jīng)設(shè)置好去做一些事情,但是你可以依據(jù)你的需要定制這些腳本。到http://jphoto.sourceforge.net/ selected=sync去看一個(gè)我們能做什么的例子。

42:重命名和調(diào)整圖片大小

難度:高級

應(yīng)用程序:bash

很喜歡你的新相機(jī)但是不能容忍那個(gè)糟糕的名字?你也想要準(zhǔn)備發(fā)布它們到網(wǎng)上嗎?沒問題,一個(gè)簡單的bash腳本真是你所需要的:

#!/bin/shcounter=1root=mypictresolution=400x300for i in `ls -1 $1/*.jpg`; doecho "Now working on $i"convert -resize $resolution $i ${root}_${counter}.jpgcounter=`expr $counter + 1`done

保存這個(gè)腳本到一個(gè)名為picturename.sh的文件中,然后用一下命令執(zhí)行它:

chmod u+x picturename.sh

然后在你的某個(gè)路徑下存儲它。現(xiàn)在,如果你在directory /path/to/pictdir下有一堆.jpg文件,所有你需要做的就是執(zhí)行這個(gè):

picturename.sh /path/to/pictdir

而在當(dāng)前的目錄下你會發(fā)現(xiàn) mypict_1.jpg, mypict_2.jpg之類的,它們是你初始圖片調(diào)整大小后的版本。你可以根據(jù)你的需要改變腳本,或者,你只是期待一個(gè)超級簡單的圖片大小調(diào)整,試著看看mogrify命令和它的-geometry參數(shù)。

43:安全登出

難度:簡單

應(yīng)用程序:bash

當(dāng)你在一臺共享機(jī)器上使用一個(gè)控制臺,或者甚至只是在你自己的桌面使用控制臺,都可能會發(fā)現(xiàn)當(dāng)你登出時(shí),屏幕仍然會顯示誰已經(jīng)登入正在做什么的痕跡。大多數(shù)發(fā)行版本將會清屏,但是有些不會。你可以通過編輯你的 ~/.bash_logout文件然后增加這個(gè)命令來解決問題:

clear

你也可以添加任何其他的有用命令在這里。

44:傳輸文件但不使用ftp或者scp

難度:簡單

應(yīng)用程序:netcat

需要傳輸一個(gè)目錄給其他服務(wù)器但是沒有FTP或者SCP使用權(quán)?那么這個(gè)小技巧將會幫助你使用netcat功能。在目的服務(wù)器上運(yùn)行:

nc -l -p 1234 | uncompress -c | tar xvfp -

并且在發(fā)送服務(wù)器上運(yùn)行:

tar cfp - /some/dir | compress -c | nc -w 3 [destination] 1234

現(xiàn)在你就可以不需要FTP并且不需要root權(quán)限,就能傳送文件了。

45:備份一個(gè)Debian包清單

難度:簡單

應(yīng)用程序:Debian

如果你正在運(yùn)行Debian并且找不到你正在運(yùn)行的包,為你當(dāng)前正在安裝的包做一個(gè)備份是非常有用的。你可以運(yùn)行如下得到一個(gè)清單:

dpkg --get-selections > debianlist.txt

這將把全部的清單放到debianlist.txt中,這樣你就可以通過如下代碼在不同的計(jì)算機(jī)上安裝相同的包。

dpkg --set-selections  debianlist.txt

當(dāng)你復(fù)制你的系統(tǒng)到一個(gè)新的計(jì)算機(jī)上時(shí),你要記住你還需要從/etc中復(fù)制配置文件。

要實(shí)際安裝這些選項(xiàng),使用如下指令:

apt-get -u dselect-upgrade

46:強(qiáng)化ssh

難度:簡單

應(yīng)用程序:ssh

盡管SSH是一個(gè)非常安全的連接服務(wù)器的方式,這里還有兩個(gè)簡單的改變,可以讓你進(jìn)一步增強(qiáng)它的安全性。首先,你當(dāng)然不希望別人直接以root用戶登入——他們應(yīng)該以普通用戶登陸,然后使用su命令來轉(zhuǎn)換。你可以在/etc/ssh/ssh_config 文件中通過添加如下代碼改變這個(gè)件事:

PermitRootLoginno

現(xiàn)在唯一能得到root特權(quán)的方式是通過su,這意味著入侵者現(xiàn)在需要破解兩個(gè)密碼來得到全部的使用權(quán)。當(dāng)你編輯這個(gè)文件時(shí),找到這樣一行:

Protocol 2, 1

然后把它改為如下:

Protocol 2

這將消除最初的SSH協(xié)議中的撤銷選項(xiàng),現(xiàn)在被認(rèn)為是非常易于攻擊的。

47:停止回應(yīng)ping

難度:簡單

應(yīng)用程序:sysctl

ping在找出網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)時(shí)是非常有用的命令,缺點(diǎn)是它只能做這件事,而且會使得網(wǎng)絡(luò)上的黑客們更容易瞄準(zhǔn)現(xiàn)場服務(wù)器。但是你可以告訴Linux忽略所有的ping服務(wù)器將不會回應(yīng)。這里有很多的方法來實(shí)現(xiàn)它,但是最好的是使用sysctl。關(guān)掉ping回應(yīng):

sysctl -w net.ipv4.icmp_echo_ignore_all=1

想要打開它,使用:

sysctl -w net.ipv4.icmp_echo_ignore_all=0

關(guān)掉ping對你來說是非常嚴(yán)重的,看看接下來的技巧。

48:降低ping速率

難度:簡單

應(yīng)用程序:sysctl

可能你想要保持服務(wù)器回復(fù)ping的功能,但是又想從被熟知的“ping flood”(封包洪流)的攻擊中保護(hù)自己。那么你要如何完成這一壯舉呢?最簡單的方法是降低回應(yīng)ping服務(wù)器的速率。它們?nèi)匀皇怯行У?,但不會使服?wù)器過載。

sysctl -w net.ipv4.icmp_echoreply_rate=10

當(dāng)回復(fù)被當(dāng)作一個(gè)信號地址發(fā)送時(shí),這將會降低速率。

49:當(dāng)?shù)浅龅臅r(shí)候清理KDE

難度:簡單

應(yīng)用程序:bash

在Windows中有很多程序會做一些清除網(wǎng)絡(luò)緩存,移除臨時(shí)文件事情。Linux上如果也可以這樣是不是很cool呢?使用KDE,你甚至不需要安裝任何新的軟件,startkde腳本將會自動的執(zhí)行你放在特殊地方的腳本。

首先,你需要在你的.kde目錄下創(chuàng)建一個(gè)命令shutdown的目錄:

mkdir /home/username/.kde/shutdown

現(xiàn)在創(chuàng)建一個(gè)腳本,用來在關(guān)機(jī)時(shí)執(zhí)行一些你想要的事情。這里是一個(gè)例子:

#!/bin/bash#clear up temp folderrm -rf ~/tmp/*#clear out cachesrm -rf ~/.ee/minis/*rm -rf ~/.kde/share/cache/http/*# delete konqueror form completionsrm ~/.kde/share/apps/khtml/formcompletions

現(xiàn)在確保你設(shè)置了正確的權(quán)限:

chmod ug+x ~/.kde/shutdown/cleanup.sh

(或者隨便你叫它什么)??梢郧宄舾形募?,也可以通過將腳本放在你的默認(rèn)KDE文件夾中有一個(gè)名為shutdown的子文件夾里,給所有用戶一個(gè)全局的關(guān)機(jī)腳本。找出你的默認(rèn)KDE目錄在哪里,試一下:

kde-config --path exe

50:無密碼的ssh

難度:中等

應(yīng)用程序:ssh

厭煩了每次登陸你的服務(wù)器時(shí)都要輸入密碼?ssh也支持密鑰,所以當(dāng)你登陸桌面時(shí)你只能輸入你的密碼。在你的桌面機(jī)器上生成一個(gè)密鑰對:

ssh-keygen -t dsa -C your.email@ddress

為你的密鑰輸入一個(gè)口令。這會將密鑰放到 ~/.ssh/id_dsa and the public key in ~/.ssh/id_dsa.pub中?,F(xiàn)在看看你是否有了一個(gè)正在運(yùn)行的ssh-agent。

echo $SSH_AGENT_PID

如果安裝了ssh-agent,大部分窗口管理器都會自動運(yùn)行它。如果沒有安裝,開啟一個(gè):

eval $(ssh-agent)

現(xiàn)在,告訴這個(gè)代理你的密鑰:

ssh-add

然后輸入你的口令。你需要在每次登陸時(shí)都輸入口令,如果你是使用X,嘗試添加:

SSH_ASKPASS=ssh-askpass ssh-add

到你的.xsession文件。(你可能需要安裝ssh-askpass)現(xiàn)在為每個(gè)你需要登入的服務(wù)器都創(chuàng)建這個(gè)目錄 ~/.ssh,然后復(fù)制這個(gè)文件~/.ssh/id_dsa.pub into it as ~/.ssh/authorized_keys 。如果你是手動開啟ssh-agent,當(dāng)你登出時(shí),使用如下代碼終止它:

ssh-agent -k

51:通過ssh使用rsync

難度:中等

應(yīng)用程序:Shell

rsync使大型目錄結(jié)構(gòu)保持同步。通過SSH使用tar遠(yuǎn)程復(fù)制一個(gè)文件系統(tǒng)的一部分是非常理想的,sync甚至更適合保持兩臺機(jī)器之間的文件系統(tǒng)的同步。為了使用SSH運(yùn)行一個(gè)rsyns,傳遞給它一個(gè)-e轉(zhuǎn)換:

rsync -ave ssh greendome:/home/ftp/pub/ /home/ftp/pub/

注意從源端(在greendome上)來的文件說明后面的 / ,在源說明中,一個(gè)尾部的 / 告訴rsync這個(gè)目錄的內(nèi)容,但不是目錄本身。為了將目錄放入正在復(fù)制的內(nèi)容的最高等級丟掉這個(gè) /:

rsync -ave ssh bcnu:/home/six .

這將在 ~/six/目錄下保持一個(gè)與bcnu:/home/six/上的任何東西同步的復(fù)制品。rsync默認(rèn)只拷貝文件和目錄,但是當(dāng)源端移除了文件時(shí)并不會在目的端移除它們的拷貝。為了保持復(fù)制的精確性,包含–delete這個(gè)標(biāo)志:

rsync -ave ssh--delete greendome:~one/reports .

現(xiàn)在當(dāng)老的報(bào)表從greendome上的~one/reports/中移除了,在同步版本中,每次這個(gè)命令運(yùn)行時(shí),它們也將會從~six/public_html/reports/中移除。如果你在corn中像這樣運(yùn)行一條命令,記得丟掉v。這將會使輸出穩(wěn)定(除非rsync在運(yùn)行中出現(xiàn)問題,在這種情況下你將會收到一封有錯(cuò)誤輸出的郵件)。使用SSH作為你的rsync運(yùn)輸方式,這樣做的好處是使數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中加密,并可以方便使用任何你已經(jīng)用SSH客戶端密鑰建立的信任關(guān)系。

52:資源掃描

難度:中等

應(yīng)用程序:nmap

例如,簡單的TCP連接掃描可以在不需要root特權(quán)時(shí)進(jìn)行:

一般來說,當(dāng)人們想到nmap時(shí),都假設(shè)nmap是用來進(jìn)行一些違法的網(wǎng)絡(luò)偵查,并為惡意攻擊做準(zhǔn)備的。但是作為一個(gè)強(qiáng)大的工具,nmap可以成為一個(gè)白帽子,做一些比入侵網(wǎng)絡(luò)有意義得多的事。

nmap rigel

nmap也可以通過指定范圍或者CIDR符號來掃描IP地址:

nmap 192.168.0.1-254nmap 192.168.0.0/24

nmap如果以root身份運(yùn)行,可以提供更多的信息。當(dāng)它以root身份運(yùn)行時(shí),通過使用-O標(biāo)志,它可以使用特殊的數(shù)據(jù)包來決定遠(yuǎn)程機(jī)器的操作系統(tǒng)。此外,你可以通過使用-sS標(biāo)志來實(shí)現(xiàn)半開的TCP掃描。nmap將會發(fā)送一個(gè)SYN數(shù)據(jù)包到遠(yuǎn)程的主機(jī),然后等待接收它回應(yīng)的ACK。如果nmap收到一個(gè)ACK,它就知道這個(gè)端口是開放的。

這不同于普通的TCP三次握手,客戶端會發(fā)送一個(gè)SYN包,如果它收到了初始的服務(wù)器ACK,客戶端隨后會將一個(gè)ACK送回服務(wù)器。攻擊者們時(shí)常使用這個(gè)選項(xiàng)來避免使他們的掃描登陸到遠(yuǎn)程機(jī)器上。

nmap -sS -O rigel
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )Interesting ports on rigel.nnc (192.168.0.61):(The 1578 ports scanned but not shown below are in state: filtered)Port State Service7/tcpopen echo 9/tcpopen discard 13/tcp open daytime 19/tcp open chargen 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 25/tcp open smtp 37/tcp open time 79/tcp open finger 111/tcpopen sunrpc 512/tcpopen exec 513/tcpopen login 514/tcpopen shell 587/tcpopen submission 7100/tcp open font-service 32771/tcpopen sometimes-rpc5 32772/tcpopen sometimes-rpc7 32773/tcpopen sometimes-rpc9 32774/tcpopen sometimes-rpc11 32777/tcpopen sometimes-rpc17 Remote operating system guess: Solaris 9 Beta through Release on SPARCUptime 44.051 days (since Sat Nov1 16:41:50 2003)Nmap run completed -- 1 IP address (1 host up) scanned in 166 seconds

伴隨著OS探測的激活,nmap可以確認(rèn)OS是Solaris,但是現(xiàn)在你還可以知道,它可能是運(yùn)行在SPARC處理器上的Version 9。

一個(gè)強(qiáng)大的功能是可以被用于和你的nmap的XML輸出性能保持聯(lián)系。使用-oX命令行轉(zhuǎn)換而激活,就像這樣:

nmap -sS -O -oX scandata.xml rigel

這在掃描IP地址范圍或者你全部的網(wǎng)絡(luò)時(shí)是特別有用的,你可以將所有通過掃描收集起來的信息放到一個(gè)XML文件里,并經(jīng)過解析后插入到數(shù)據(jù)庫中。這里是一個(gè)開放的端口的XML入口:

port protocol="tcp" portid="22">state state="open" />service name="ssh" method="table" conf="3" />/port>

nmap是一個(gè)強(qiáng)大的工具。通過使用它的XML輸出性能,一點(diǎn)點(diǎn)的腳本,還有一個(gè)數(shù)據(jù)庫,你可以創(chuàng)造一個(gè)更強(qiáng)大的可以在你的網(wǎng)絡(luò)上監(jiān)測未授權(quán)的服務(wù)和機(jī)器的工具。

53:備份你的bootsector(引導(dǎo)扇區(qū))

難度:高級

應(yīng)用程序:Shell

妨礙引導(dǎo)裝入,雙啟動和很多其他下熱鬧的程序會留給你一個(gè)混亂的引導(dǎo)扇區(qū)。為什么不在你可以備份的時(shí)候給它創(chuàng)建一個(gè)備份呢:

引導(dǎo)裝載器混亂、雙啟動及許多其他的可怕的進(jìn)程可能造成亂七八糟的啟動區(qū)。

dd if=/dev/hda of=bootsector.img bs=512 count=1

很顯然,你應(yīng)該改變這個(gè)裝置來顯示你的boot驅(qū)動(有可能是SCSI的sda)。還要非常小心,別把事情搞砸——你可能會輕而易舉地毀掉你的驅(qū)動!恢復(fù)時(shí)使用:

dd if=bootsector.img of=/dev/hda

54:保護(hù)日志文件

難度:高級

應(yīng)用程序:很多

在一個(gè)入侵過程中,一個(gè)入侵者將會很可能在很多系統(tǒng)日志中留下能反映他行為的跡象:一個(gè)有價(jià)值的審計(jì)追蹤應(yīng)該被保護(hù)。沒有可靠的日志,就很難發(fā)現(xiàn)攻擊者是如何侵入,或者是從哪里來的攻擊。這個(gè)信息在分析事件、聯(lián)系相關(guān)方面并給予反饋上,是很關(guān)鍵的。但是,如果入侵成功,什么才能阻止他來移除他的這些錯(cuò)誤行為的痕跡呢?

這就是文件屬性能發(fā)揮作用、挽回?cái)【值牡胤剑ɑ蛘咧辽偈故虑闆]那么糟)。Linux和BSD都有給文件和目錄分配額外的屬性這個(gè)功能。這不同于標(biāo)準(zhǔn)的Unix權(quán)限方案中,系統(tǒng)為所有的用戶提供的普遍的屬性設(shè)置,而且它們比文件權(quán)限或者ACL都要更深層次影響文件訪問。

在Linux中,你可以看到并且通過lsattr和chattr命令分別修改一個(gè)給出文件的設(shè)置。在寫這篇文章時(shí),Linux的文件屬性只能在你使用ext2和ext3時(shí)獲得。這還有些XFS和ReiserFS的關(guān)于獲得屬性支持的內(nèi)核補(bǔ)丁。一個(gè)保護(hù)日志文件的有用的屬性是append-only。當(dāng)這個(gè)屬性被設(shè)置后,文件不能被刪除,而且寫操作只能被允許在文件的最后追加。

在Linux下要設(shè)置append-only標(biāo)志,運(yùn)行這條命令:

chattr +afilename

看看+a屬性是如何工作的:創(chuàng)建一個(gè)文件然后設(shè)置它的append-only屬性:

touch /var/log/logfileecho "append-only not set" > /var/log/logfilechattr +a /var/log/logfileecho "append-only set" > /var/log/logfilebash: /var/log/logfile: Operation not permitted

企圖第二次寫文件失敗,因?yàn)樗鼘⒏采w這個(gè)文件。然而,在文件的末尾追加仍然是被允許的:

echo "appending to file" >> /var/log/logfilecat /var/log/logfileappend-only not setappending to file

顯而易見,一個(gè)獲得root特權(quán)的侵入者能意識到使用了文件屬性,并且可以通過運(yùn)行chattr -a來移除append-only標(biāo)志。為了防止這種情況,我們需要禁用移除append-only屬性的性能,在Linux下使用功能機(jī)制完成這個(gè)。

Linux功能模型分割特權(quán)給全能的root賬戶,并且允許你有選擇的禁用它們。為了防止一個(gè)用戶移除一個(gè)文件的append-only屬性,我們需要移除CAP_LINUX_IMMUTABLE功能。當(dāng)體現(xiàn)在當(dāng)前運(yùn)行系統(tǒng)中時(shí),這個(gè)功能允許append-only屬性被修改。為了當(dāng)前系統(tǒng)中獲得修改這個(gè)功能的設(shè)置,我們將簡單有效地調(diào)用lcap.

為了解壓和編譯這個(gè)工具,運(yùn)行這條命令:

tar xvfj lcap-0.0.3.tar.bz2  cd lcap-0.0.3  make

然后,不允許修改append-only標(biāo)志,運(yùn)行:

./lcap CAP_LINUX_IMMUTABLE./lcap CAP_SYS_RAWIO

第一條命令移除了改變append-only標(biāo)志的功能,然后第二條移除了原始I/O的功能。這是很有必要的,因?yàn)檫@樣就能保護(hù)文件不被訪問塊設(shè)備時(shí)駐留在其上的東西修改。這阻止了訪問/dev/mem和/dev/kmem,有可能給入侵者提供恢復(fù)CAP_LINUX_IMMUTABLE功能的漏洞。為了在boot上移除這項(xiàng)功能,添加之前的兩條命令到你的系統(tǒng)啟動腳本中(例如/etc/rc.local)。你應(yīng)該確保這個(gè)功能在boot命令中被移除了,防止其他啟動腳本出問題。一旦lcap移除了內(nèi)核功能,就只能通過重啟系統(tǒng)來恢復(fù)了。

在做這些之前,你應(yīng)該明白,給你的日志文件添加append-only標(biāo)志,將會造成日志循環(huán)腳本失敗。然而,做這件事將會極大的提升你的審計(jì)追蹤的安全性。安全性的提升在突發(fā)事件中會被證明是很有用的。

55:自動加密連接

難度:高級

應(yīng)用程序:FreeS/WAN

一個(gè)FreeS/WAN支持的特別cool的功能是,當(dāng)其他主機(jī)運(yùn)行FreeS/WAN時(shí)隨機(jī)加密。這允許FreeS/WAN在所有支持隨機(jī)加密的主機(jī)間透明傳輸。為了這個(gè),每臺主機(jī)必須使用FreeS/WAN生成一個(gè)公鑰,這個(gè)公鑰可以存儲于那臺主機(jī)的一個(gè)DNS TXT記錄中。當(dāng)一臺主機(jī)要與另一個(gè)主機(jī)建立一個(gè)隨機(jī)加密,希望初始化一個(gè)加密連接時(shí),將會通過DNS查詢這臺主機(jī)的公鑰并且初始化這個(gè)連接。

一開始,你想使用這個(gè)功能時(shí),需要為每一臺主機(jī)生成一個(gè)公鑰。你可以通過運(yùn)行如下命令來實(shí)現(xiàn)它:

ipsec newhostkey --output /tmp/`hostname`.key

現(xiàn)在你需要添加通過那條命令創(chuàng)建的文件的內(nèi)容到/etc/ipsec.secrets中。

cat /tmp/`hostname`.key >> /etc/ipsec.secrets

然后,你需要生成一個(gè)TXT記錄來存放你的DNS區(qū)域。你可以通過運(yùn)行如下命令來實(shí)現(xiàn)它:

ipsec showhostkey --txt @colossus.nnc

現(xiàn)在添加這條記錄到你的空間然后重載它。你會證實(shí)DNS已經(jīng)通過這條命令正確的運(yùn)行了:

ipsec verify
Checking your system to see if IPsec got installed and started correctlyVersion check and ipsec on-path[OK]Checking for KLIPS support in kernel [OK]Checking for RSA private key (/etc/ipsec.secrets) [OK]Checking that pluto is running [OK]DNS checks. Looking for TXT in forward map: colossus [OK]Does the machine have at least one non-private address [OK]

現(xiàn)在只需要重啟FreeS/WAN-你現(xiàn)在應(yīng)該能連接到任何支持隨機(jī)加密的主機(jī)上了。但是如果其他的主機(jī)想要連接你該怎么辦?要授權(quán)連接,你需要在你的DNS反向查找區(qū)域?yàn)槟愕臋C(jī)器創(chuàng)建一個(gè)TXT記錄。

你可以通過運(yùn)行一個(gè)簡單的命令來生成一條記錄:

ipsec showhostkey --txt 192.168.0.64

為你的子網(wǎng)添加這條記錄到反向查找區(qū)域,然后其他的機(jī)器就可以和你的機(jī)器初始化隨機(jī)加密了。伴隨著隨機(jī)加密的使用,所有主機(jī)間的傳輸將被自動加密,同時(shí)保護(hù)所有的服務(wù)。

56:消除二進(jìn)制suid

難度:中等

應(yīng)用程序:find

如果你的服務(wù)器有比你自身多的shell用戶,你應(yīng)該在你的系統(tǒng)上定期的審核setuid和setgid的二進(jìn)制文件??赡苣銜@訝你找到了那么多文件。這里有一個(gè)搜尋所有setuid或者setgid的文件的命令位設(shè)置:

find / -perm +6000 -type f -exec ls -ld {} \; > setuid.txt 

這將會創(chuàng)建一個(gè)名為setuid.txt的文件,包含了所有當(dāng)前系統(tǒng)上匹配的文件的細(xì)節(jié)。要移除任何你不用的工具的s位,輸入:

chmod a-s program

57:Mac過濾Host AP

難度:高級

應(yīng)用程序:iwpriv

你可以在鏈路層使用iptables或者ebtables執(zhí)行MAC過濾,那比讓Host AP為你做這些更安全。這不僅僅是阻礙指向你的網(wǎng)絡(luò)傳輸,也是預(yù)防邪惡的人關(guān)聯(lián)你的站。這能幫助組織某些人給你的其他無線客戶端造成麻煩的可能,即使他們沒有更多的網(wǎng)絡(luò)通道。

當(dāng)使用MAC過濾時(shí),很多人會列出一個(gè)他們希望允許的無線裝置清單,然后拒絕所有其他的。使用iwpriv命令完成這個(gè)功能:

iwpriv wlan0 addmac 00:30:65:23:17:05iwpriv wlan0 addmac 00:40:96:aa:99:fd...iwpriv wlan0 maccmd 1iwpriv wlan0 maccmd 4

addmac指示添加一個(gè)MAC地址到內(nèi)部表。只要你喜歡你就可以通過執(zhí)行更多的addmac命令添加更多的MAC地址到表中。然后你需要告訴Host AP對你已經(jīng)建好的表做什么。maccmd 1命令告訴Host AP就像使用一個(gè)“允許”清單一樣使用這個(gè)表,并且拒絕所有其他的MAC地址來關(guān)聯(lián)。最終,maccmd 4命令去除掉所有的關(guān)聯(lián)客戶端,強(qiáng)制使它們重新關(guān)聯(lián)。對表中的客戶端來說是自動發(fā)生的,但是其他的任何企圖關(guān)聯(lián)的客戶端都是被拒絕的。

有時(shí),你只需要禁止一個(gè)或者兩個(gè)搗蛋鬼,而不是設(shè)置一個(gè)詳細(xì)的被允許的硬件規(guī)則。如果你需要禁止兩三個(gè)MAC地址而允許其他所有的地址,嘗試這個(gè):

iwpriv wlan0 addmac 00:30:65:fa:ca:deiwpriv wlan0 maccmd 2iwpriv wlan0 kickmac 00:30:65:fa:ca:de

像以前一樣,你可以不限次數(shù)的使用addmac,只要你樂意。Maccmd2命令會將規(guī)則設(shè)置為“拒絕”,而如果該MAC恰巧已經(jīng)關(guān)聯(lián),kickmac會立刻將特定的MACboot。這也許比只為了禁止一個(gè)搗蛋鬼而消除所有關(guān)聯(lián)然后讓他們重新鄰接要好一些。順便說一下,如果你想要消除所有的MAC過濾,嘗試maccmd 0。

如果你錯(cuò)誤的輸入了一個(gè)MAC地址,你可以像使用addmac一樣使用delmac命令,然后它(可以預(yù)見)就會從表中刪掉這個(gè)給出的MAC地址。你有時(shí)會需要完全清除當(dāng)前的MAC表但是保留它當(dāng)前的規(guī)則,使用這條命令:

iwpriv wlan0 maccmd 3

最后,你可以通過使用/proc瀏覽正在運(yùn)行的MAC表:

cat /proc/net/hostap/wlan0/ap_control

iwpriv程序操縱正在運(yùn)行的Host AP驅(qū)動,但是重啟后不保留設(shè)置。一旦你對你的MAC過濾表感到滿意,請確保你在一個(gè)rc腳本中添加了相關(guān)命令在啟動時(shí)間運(yùn)行。

注意,未關(guān)聯(lián)的客戶端仍然可以監(jiān)聽網(wǎng)絡(luò)傳輸,所以MAC過濾實(shí)際上只能預(yù)防一點(diǎn)點(diǎn)竊取。為了與被動的監(jiān)聽技巧搏斗,你需要加密你的數(shù)據(jù)。

更新:如果你想要知道更多的技巧,請查看《More Linux tips every geek should know》(每個(gè)geek應(yīng)該知道的更多的技巧)

標(biāo)簽:衡陽 衡陽 茂名 湘西 慶陽 六盤水 三門峽 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux極客的56個(gè)技巧》,本文關(guān)鍵詞  Linux,極客,的,56個(gè),技巧,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux極客的56個(gè)技巧》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux極客的56個(gè)技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章