国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
10 個(gè)最酷的 Linux 單行命令
1.以SUDO運(yùn)行上條命令
$ sudo !!
大家應(yīng)該都知sudo,不解釋。但通常出現(xiàn)的情況是,敲完命令執(zhí)行后報(bào)錯(cuò)才發(fā)現(xiàn)忘了sudo。這時(shí)候,新手用戶就會(huì):按上箭頭,按左箭頭,盯著光標(biāo)回到開始處,輸入sudo,回車;高手用戶就蛋定多了,按Ctrl-p,按Ctrl-a,輸入sudo,回車。
這里介紹這個(gè)是天外飛仙級(jí)別的,對(duì),就直接sudo !!。
當(dāng)然這幾種解決方式效果是完全一樣的,只是款不一樣,嗯,不解釋。
兩個(gè)感嘆號(hào)其實(shí)是bash的一個(gè)特性,稱為事件引用符(eventdesignators)。!!其實(shí)相當(dāng)于!-1,引用前一條命令,當(dāng)然也可以!-2,!-50。默認(rèn)情況下bash會(huì)在~/.bash_history文件內(nèi)記錄用戶執(zhí)行的最近500條命令,history命令可以顯示這些命令。


關(guān)于事件引用符的更多用法可以深入閱讀 The Definitive Guide to Bash Command Line History
2.以HTTP方式共享當(dāng)前文件夾的文件
$ python -m **HTTPServer
這命令啟動(dòng)了Python的**HTTPServer模塊,考慮到Python在絕大多數(shù)的Linux發(fā)行版當(dāng)中都默認(rèn)安裝,所以這個(gè)命令很可能是最簡單的跨平臺(tái)傳文件的方法。
命令執(zhí)行后將在本機(jī)8000端口開放HTTP服務(wù),在其他能訪問本機(jī)的機(jī)器的瀏覽器打開ttp://ip:8000即打開一個(gè)目錄列表,點(diǎn)擊即可下載。
3.在以普通用戶打開的VIM當(dāng)中保存一個(gè)ROOT用戶文件
:w !sudo tee %
這題目讀起來糾結(jié),其實(shí)是很常見的,常常忘記了sudo就直接用vim編輯/etc內(nèi)的文件,(不過也不一定,vim發(fā)現(xiàn)保存的文件無法保存時(shí)候會(huì)提示)等編輯好了,保存時(shí)候才發(fā)現(xiàn)沒權(quán)限。曲線方法是先保存?zhèn)€臨時(shí)文件,退出后再sudocp回去。不過實(shí)際上在vim里面可以直接完成這個(gè)過程的,命令就是如此。
查閱vim的文檔(輸入:help :w),會(huì)提到命令:w!{cmd},讓vim執(zhí)行一個(gè)外部命令{cmd},然后把當(dāng)前緩沖區(qū)的內(nèi)容從stdin傳入。
tee是一個(gè)把stdin保存到文件的小工具。
而%,是vim當(dāng)中一個(gè)只讀寄存器的名字,總保存著當(dāng)前編輯文件的文件路徑。
所以執(zhí)行這個(gè)命令,就相當(dāng)于從vim外部修改了當(dāng)前編輯的文件,好完工。
4.切換回上一個(gè)目錄
$ cd -
應(yīng)該不少人都知道這個(gè),橫桿-代表上一個(gè)目錄的路徑。
實(shí)際上cd -就是cd $OLDPWD的簡寫,bash的固定變量$OLDPWD總保存著之前一個(gè)目錄的路徑。
相對(duì)地,$PWD總保存著當(dāng)前目錄的路徑。這些變量在編寫shell腳本時(shí)候相當(dāng)有用。
5.替換上一條命令中的一個(gè)短語
$ ^foo^bar^
又是另外一個(gè)事件引用符(event designator),可以把上一條命令當(dāng)中的foo替換成bar。
在需要重復(fù)運(yùn)行調(diào)試一道長長的命令,需要測試某個(gè)參數(shù)時(shí)候,用這個(gè)命令會(huì)比較實(shí)用;但多數(shù)人會(huì)首先選擇按上箭頭提出上道命令,再移動(dòng)光標(biāo)去修改某參數(shù),這樣更直觀,但效率上就不夠使用引用符高,而且在腳本中用這個(gè)方法可以簡化很多。
這道命令的原始樣式應(yīng)該是這樣的:
!!:s/foo/bar/
本文一開始介紹過!!,后面的一段大家應(yīng)該很熟悉,vim、sed的替換操作都是這樣的語法。
關(guān)于事件引用符的更多用法可以深入閱讀The Definitive Guide to Bash Command Line History
6.快速備份一個(gè)文件
$ cp filename{,.bak}
這道命令把filename文件拷貝成filename.bak,大家應(yīng)該在一些比較復(fù)雜的安裝教程里面見過這樣的用法。其原理就在于bash對(duì)大括號(hào)的展開操作,filename{,.bak}這一段會(huì)被展開成filename filename.bak再傳給cp,于是就有了備份的命令了。
大括號(hào)在bash里面是一個(gè)排列的意義,可以試試這個(gè):
$ echo {a,b,c}{a,b,c}{a,b,c}
將輸出三個(gè)集合的全排列:
aaa aab aac aba abb abc aca acb acc
baa bab bac bba bbb bbc bca bcb bcc
caa cab cac cba cbb cbc cca ccb ccc
關(guān)于shell當(dāng)中的集合操作,可深入閱讀”Set Operations in the Unix Shell
7.免密碼SSH登錄主機(jī)
$ ssh-copy-id remote-machine
這個(gè)命令把當(dāng)前用戶的公鑰串寫入到遠(yuǎn)程主機(jī)的~/.ssh/authorized_keys內(nèi),這樣下次使用ssh登錄的時(shí)候,遠(yuǎn)程主機(jī)就直接根據(jù)這串密鑰完成身份校驗(yàn),不再詢問密碼了。前提是你當(dāng)前用戶有生成了公鑰,默認(rèn)是沒有的,先執(zhí)行ssh-keygen試試吧!
這個(gè)命令如果用手工完成,是這樣的:
your-machine$ scp ~/.ssh/identity.pub remote-machine:
your-machine$ ssh remote-machine
remote-machine$ cat identity.pub >> ~/.ssh/authorized_keys
如果你想刪掉遠(yuǎn)程主機(jī)上的密鑰,直接打開authorized_keys,搜索你的用戶名,刪除那行,即可。
8.抓取LINUX桌面的視頻
$ ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

我們?cè)谝恍┮曨l網(wǎng)站上看到別人的3D桌面怎么怎么酷的視頻,通常就是這么來的,ffmpeg可以直接解碼X11的圖形,并轉(zhuǎn)換到相應(yīng)輸出格式。
ffmpeg的通常用法是,根據(jù)一堆參數(shù),輸出一個(gè)文件,輸出文件通常放最后,下面解析下幾個(gè)參數(shù):
-f x11grab 指定輸入類型。因?yàn)閤11的緩沖區(qū)不是普通的視頻文件可以偵測格式,必須指定后ffmpeg才知道如何獲得輸入。
-s wxga 設(shè)置抓取區(qū)域的大小。wxga是1366*768的標(biāo)準(zhǔn)說法,也可以換成-s 800×600的寫法。
-r 25 設(shè)置幀率,即每秒抓取的畫面數(shù)。
-i :0.0 設(shè)置輸入源,本地X默認(rèn)在0.0
-sameq 保持跟輸入流一樣的圖像質(zhì)量,以用來后期處理。


1.用你最喜歡的編輯器來敲命令
command <CTRL-x CTRL-e>
在已經(jīng)敲完的命令后按 <CTRL-x CTRL-e>,會(huì)打開一個(gè)你指定的編輯器(比如vim,通過環(huán)境變量$EDITOR指定),里面就是你剛輸入的命令,然后愛怎么編輯就怎么編輯吧,特別是那些參數(shù)異常復(fù)雜的程序,比如mencoder/ffmpeg,一個(gè)命令動(dòng)輒3、4行的,要修改其中的參數(shù),這個(gè)方法最合適不過了,保存退出后自動(dòng)執(zhí)行這個(gè)程序。
實(shí)際上這是readline庫的功能,在默認(rèn)情況下,bash使用的是emacs模式的命令行操作方式, <CTRL-x  CTRL-e>是調(diào)用這個(gè)功能的一個(gè)綁定。如果你習(xí)慣使用vi模式,按 <ESC v> 可以實(shí)現(xiàn)同樣功能。
如果你喜歡別的編輯器,可以在~/.bashrc里面放上比如export EDITOR=nano的命令。
另外一個(gè)修改命令的方法是使用fc命令(Fix Command),在編輯器里面打開上一句命令。我們的第一輯連載提過一個(gè)^foo^bar^命令可以用fc來實(shí)現(xiàn):fc -s foo=bar。

2.清空或創(chuàng)建一個(gè)文件
> file.txt
>在shell里面是標(biāo)準(zhǔn)輸出重定向符,即把(前部個(gè)命令的)命令行輸出轉(zhuǎn)往一個(gè)文件內(nèi),但這里沒有”前部命令”,輸出為空,于是就覆蓋(或創(chuàng)建)成一個(gè)空文件了。
有些腳本的寫法是:>file.txt,因?yàn)?是bash默認(rèn)存在的空函數(shù)。
單純創(chuàng)建文件也可以用$touch file.txt,touch本來是用作修改文件的時(shí)間戳,但如果文件不存在,就自動(dòng)創(chuàng)建了。
3.用SSH創(chuàng)建端口轉(zhuǎn)發(fā)通道
ssh -N -L2001:remotehost:80 user@somemachine
這個(gè)命令在本機(jī)打開了2001端口,對(duì)本機(jī)2001端口的請(qǐng)求通過somemachine作為跳板,轉(zhuǎn)到remotehost的80端口上。
實(shí)現(xiàn)效果跟術(shù)語反向代理是相似的,實(shí)際上就是端口轉(zhuǎn)發(fā),注意上面的描述涉及了3臺(tái)主機(jī),但當(dāng)然somemachine可以變成localhost。
這個(gè)命令比較抽象,但有時(shí)候是很有用的,比如因?yàn)楸娝苤脑驀鴥?nèi)的IP的80端口無法使用,又或者公司的防火墻只給外網(wǎng)開了ssh端口,需要訪問內(nèi)部服務(wù)器一個(gè)web應(yīng)用,以及需要訪問某些限定了來源IP的服務(wù),就可以用上這個(gè)方法了。
舉一個(gè)具體例子,運(yùn)行:
ssh -f -N -L 0.0.0.0:443:twitter.com:443 shell.cjb.net
ssh  -f -N -L 0.0.0.0:80:twitter.com:80 shell.cjb.net
然后在/etc/hosts里面添加127.0.0.1 twitter.com,好吧剩下的你懂的。
當(dāng)然通常做這個(gè)功能的反向代理,應(yīng)該要用squid、nginx之類,ssh就算是輕量級(jí)的嘗試吧!
4.重置終端
reset
如果你試過不小心cat了某個(gè)二進(jìn)制文件,很可能整個(gè)終端就傻掉了,可能不會(huì)換行,沒法回顯,大堆亂碼之類的,這時(shí)候敲入reset回車,不管命令有沒有顯示,就能回復(fù)正常了。
實(shí)際上reset命令只是輸出了一些特殊字符,我們看BusyBox里面最簡單的reset程序的實(shí)現(xiàn):
printf(“\033c\033(K\033[J\033[0m\033[?25h”);
輸出的這些字符對(duì)Shell是有特殊意義的:
\033c: “ESC c” – 發(fā)送重置命令;
\033(K: “ESC ( K” – 重載終端的字符映射;
\033[J: “ESC [ J” – 清空終端內(nèi)容;
\033[0m: “ESC [ 0 m” – 初始化字符顯示屬性;
\033[?25h: “ESC [ ? 25 h” – 讓光標(biāo)可見;
其中字符顯示屬性經(jīng)常用來設(shè)定打印字符的顏色等,可參考這個(gè)博文。
5.在午夜的時(shí)候執(zhí)行某命令
echo cmd | at midnight
說的就是at這個(gè)組件,通常跟cron相提并論,不過at主要用于定時(shí)一次性任務(wù),而cron定時(shí)周期性任務(wù)。
at的參數(shù)比較人性化,跟英語語法一樣,可以tomorrow, next week之類的,詳細(xì)的查看手冊(cè)man at。
6.遠(yuǎn)程傳送麥克風(fēng)語音
dd if=/dev/dsp | ssh username@host dd of=/dev/dsp
沒錯(cuò)就是實(shí)現(xiàn)一個(gè)喊話器的功能。
/dev/dsp是Linux下聲卡的文件映射(Digital Signal  Proccessor),從其中讀數(shù)據(jù)就是錄音,往里面寫數(shù)據(jù)就是播放,相當(dāng)簡單!
dd是常用的數(shù)據(jù)拷貝程序,如果不同時(shí)指定if、of,就直接使用stdin/stdout來傳輸。
如果你沒有遠(yuǎn)程主機(jī),可以試試這樣:
dd if=/dev/dsp of=/dev/dsp
直接回放麥克風(fēng)的聲音,只是有一點(diǎn)延時(shí)。
但是如果有別的程序正在使用聲卡,這個(gè)方法就不湊效了,因?yàn)橐话愕穆暱ǘ疾辉试S多個(gè)音頻流同時(shí)處理,可以借用alsa組件的工具,arecord跟aplay:
arecord | ssh username@host aplay
本地回放就是:
arecord | aplay
如果你想嚇嚇別人:
cat /dev/urandom | ssh username@host aplay
7.映射一個(gè)內(nèi)存目錄
mount -t tmpfs -o size=1024m tmpfs /mnt/ram
這個(gè)命令開了一塊1G內(nèi)存來當(dāng)目錄用。不過放心,如果里面沒文件,是不會(huì)占用內(nèi)存的,用多少占多少。
不過一般來說沒必要手動(dòng)掛載,因?yàn)槎鄶?shù)發(fā)行版都會(huì)在fstab內(nèi)預(yù)留了一個(gè)內(nèi)存目錄,掛載在/dev/shm,直接使用即可;
最常見的用途是用內(nèi)存空間來放Firefox的配置,可以讓慢吞吞的FF快很多,參見Shellex的博文:用tmpfs讓Firefox在內(nèi)存中飛馳,以及后來的改進(jìn):用tmpfs讓Firefox在內(nèi)存中飛馳II,其中提到的腳本來自speeding up firefox with tmpfs and automatic rsync。
那個(gè)破爛LinuxQQ也可以用這個(gè)方法,減少因?yàn)榇罅看疟PIO導(dǎo)致的問題。
8.用DIFF對(duì)比遠(yuǎn)程文件跟本地文件
ssh user@host cat /path/to/remotefile | diff /path/to/localfile  -
diff通常的用法是從參數(shù)讀入兩個(gè)文件,而命令里面的-則是指從stdin讀入了。
善用ssh可以讓web開發(fā)減少很多繁瑣,還有比如sshfs,可以從編輯-上傳-編輯-上傳的人工循環(huán)里面解脫出來。
9.查看系統(tǒng)中占用端口的進(jìn)程
netstat -tulnp
Netstat是很常用的用來查看Linux網(wǎng)絡(luò)系統(tǒng)的工具之一,這個(gè)參數(shù)可以背下來:
-t: 顯示TCP鏈接信息
-u: 顯示UDP鏈接信息
-l: 顯示監(jiān)聽狀態(tài)的端口
-n:  直接顯示ip,不做名稱轉(zhuǎn)換
-p: 顯示相應(yīng)的進(jìn)程PID以及名稱(要root權(quán)限)
如果要查看關(guān)于sockets更詳細(xì)占用信息等,可以使用lsof工具。
 
1. 更友好的顯示當(dāng)前掛載的文件系統(tǒng)

    mount | column -t

這條命令適用于任何文件系統(tǒng),column 用于把輸出結(jié)果進(jìn)行列表格式化操作,這里最主要的目的是讓大家熟悉一下 columnt 的用法。

下面是單單使用 mount 命令的結(jié)果:

    $ mount

    /dev/root on / type ext3 (rw)
    /proc on /proc type proc (rw)
    /dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

而加了 column -t 命令后就成為這樣了:

    $ mount | column -t

    /dev/root on / type ext3 (rw)
    /proc on /proc type proc (rw)
    /dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

另外你可加上列名稱來改善輸出結(jié)果

          $ (echo "DEVICE - PATH - TYPE FLAGS" && mount) | column -t
      

    DEVICE – PATH – TYPE FLAGS
    /dev/root on / type ext3 (rw)
    /proc on /proc type proc (rw)
    /dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

列2和列4并不是很友好,我們可以用 awk 來再處理一下

          $ (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t
      

    DEVICE PATH TYPE FLAGS
    /dev/root / ext3 (rw)
    /proc /proc proc (rw)
    /dev/mapper/lvmraid-home /home ext3 (rw,noatime)

最后我們可以設(shè)置一個(gè)別名,為 nicemount

          $ nicemount() { (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t; }
      

試一下

    $ nicemount

    DEVICE PATH TYPE FLAGS
    /dev/root / ext3 (rw)
    /proc /proc proc (rw)
    /dev/mapper/lvmraid-home /home ext3 (rw,noatime)

2. 運(yùn)行前一個(gè) Shell 命令,同時(shí)用 “bar” 替換掉命令行中的每一個(gè) “foo”

    !!:gs/foo/bar

!! 表示重復(fù)執(zhí)行上一條命令,并用 :gs/foo/bar 進(jìn)行替換操作。

關(guān)于 !! 這個(gè)用法在前一篇文章中已有詳細(xì)的介紹。

3. 實(shí)時(shí)某個(gè)目錄下查看最新改動(dòng)過的文件

          watch -d -n 1 'df; ls -FlAt /path'
      

在使用這條命令時(shí)你需要替換其中的 /path 部分,watch 是實(shí)時(shí)監(jiān)控工具,-d 參數(shù)會(huì)高亮顯示變化的區(qū)域,-n 1 參數(shù)表示刷新間隔為 1 秒。

df; ls -FlAt /path 運(yùn)行了兩條命令,df 是輸出磁盤使用情況,ls -FlAt 則列出 /path 下面的所有文件。

ls -FlAt 的參數(shù)詳解:

    -F 在文件后面加一個(gè)文件符號(hào)表示文件類型,共有 */=>@| 這幾種類型,* 表示可執(zhí)行文件,/ 表示目錄,= 表示接口( sockets) ,> 表示門, @ 表示符號(hào)鏈接, | 表示管道。
    -l 以列表方式顯示
    -A 顯示 . 和 ..
    -t 根據(jù)時(shí)間排序文件

4. 通過 SSH 掛載遠(yuǎn)程主機(jī)上的文件夾

    sshfs name@server:/path/to/folder /path/to/mount/point

這條命令可以讓你通過 SSH 加載遠(yuǎn)程主機(jī)上的文件系統(tǒng)為本地磁盤,前提是你需要安裝 FUSE 及 sshfs 這兩個(gè)軟件。

譯者注:關(guān)于 sshfs 實(shí)際上我之前寫過一篇文章介紹過,詳見”在 Ubuntu 上使用 sshfs 映射遠(yuǎn)程 ssh 文件系統(tǒng)為本地磁盤“。

卸載的話使用 fusermount 命令:

    fusermount -u /path/to/mount/point

5. 通過 DNS 來讀取 Wikipedia 的詞條

    dig +short txt <keyword>.wp.dg.cx

這也許是最有趣的一條技巧了,David Leadbeater 創(chuàng)建了一個(gè) DNS 服務(wù)器,通過它當(dāng)你查詢一個(gè) TXT 記錄類型時(shí),會(huì)返回一條來自于 Wikipedia 的簡短的詞條文字,這是他的介紹。

這里有一個(gè)樣例,來查詢 “hacker” 的含義:

    $ dig +short txt hacker.wp.dg.cx

    “Hacker may refer to: Hacker (computer security), someone involved
    in computer security/insecurity, Hacker (programmer subculture), a
    programmer subculture originating in the US academia in the 1960s,
    which is nowadays mainly notable for the free software/” “open
    source movement, Hacker (hobbyist), an enthusiastic home computer
    hobbyist http://a.vu/w:Hacker

這里使用了 dig 命令,這是標(biāo)準(zhǔn)的用來查詢 DNS 的系統(tǒng)管理工具,+short 參數(shù)是讓其僅僅返回文字響應(yīng),txt 則是指定查詢 TXT 記錄類型。

更簡單的做法是你可以為這個(gè)技巧創(chuàng)建一個(gè)別名:

    wiki() { dig +short txt $1.wp.dg.cx; }

然后試試吧:

    $ wiki hacker

    “Hacker may refer to: Hacker (computer security), …”

如果你不想用 dig ,也可以用 host 命令:

    host -t txt hacker.wp.dg.cx

6. 用 Wget 的遞歸方式下載整個(gè)網(wǎng)站

    wget --random-wait -r -p -e robots=off -U Mozilla www.example.com
      

參數(shù)解釋:

    - -random-wait 等待 0.5 到 1.5 秒的時(shí)間來進(jìn)行下一次請(qǐng)求
    -r 開啟遞歸檢索
    -e robots=off 忽略 robots.txt
    -U Mozilla 設(shè)置 User-Agent 頭為 Mozilla

其它一些有用的參數(shù):

    - -limit-rate=20K 限制下載速度為 20K
    -o logfile.txt 記錄下載日志
    -l 0 刪除深度(默認(rèn)為5)
    –wait=1h 每下載一個(gè)文件后等待1小時(shí)

7. 復(fù)制最后使用的命令中的參數(shù)

    ALT + . (or ESC + .)

這個(gè)快捷鍵只能工作于 shell 的 emacs 編輯模式,它可以從最后使用的命令行中復(fù)制參數(shù)到當(dāng)前命令行中,下面是一個(gè)樣例:

    $ echo a b c
    a b c

    $ echo <Press ALT + .>
    $ echo c

你可以重復(fù)執(zhí)行該快捷鍵,以便獲取自已需要的參數(shù),

以下是樣例:

    $ echo 1 2 3
    1 2 3
    $ echo a b c
    a b c

    $ echo <Press ALT + .>
    $ echo c

    $ echo <Press ALT + .> again
    $ echo 3

另外,假如你想指定第1個(gè)或第2個(gè),或者是第 n 個(gè)參數(shù)的話,可以按 ALT + 1 (或 ESC + 1) 或 ALT + 2 (或 ESC +2) 這樣形式的快捷鍵。

以下是樣例:

    $ echo a b c
    a b c

    $ echo <Press ALT + 1> <Press ALT + .>
    $ echo a
    a

    $ echo <Press ALT + 2> <Press ALT + .>
    $ echo b
    b

查看” Emacs Editing Mode Keyboard Shortcuts “ 一文獲取更多類似的快捷鍵。

8. 執(zhí)行一條命令但不保存到 history 中

    <space> command

這條命令可運(yùn)行于最新的 Bash shell 里,在其它 shell 中沒測試過。

通過在命令行前面添加一個(gè)空格,就可以阻止這條命令被保存到 bash history (~/.bash_history) 文件中,這個(gè)行為可以通過 $HISTIGNORE shell 變量來控制。我的設(shè)置是 HISTIGNORE=”&:[ ]*” ,表示不保存重復(fù)的命令到 history 中,并且不保存以空格開頭的命令行。$HISTIGNORE 中的值以冒號(hào)分隔。

如果你對(duì)此感興趣,想深入了解的話,可進(jìn)一步看此文”The Definitive Guide to Bash Command Line History“

9. 顯示當(dāng)前目錄中所有子目錄的大小

          du -h --max-depth=1

- -max-depth=1 參數(shù)可以讓 du 命令顯示當(dāng)前目錄下 1 級(jí)子目錄的統(tǒng)計(jì)信息,當(dāng)然你也可以把 1 改為 2 ,進(jìn)一步顯示 2 級(jí)子目錄的統(tǒng)計(jì)信息,可以靈活運(yùn)用。而 -h 參數(shù)則是以 Mb 、G 這樣的單位來顯示大小。

譯者注:在此推薦一個(gè)小工具 ncdu ,可以更方便的達(dá)到此效果。

10. 顯示消耗內(nèi)存最多的 10 個(gè)運(yùn)行中的進(jìn)程,以內(nèi)存使用量排序

    ps aux | sort -nk +4 | tail

顯然這并不是最好的方法,但它確實(shí)用起還不錯(cuò)。

這是一個(gè)典型的管道應(yīng)用,通過 ps aux 來輸出到 sort 命令,并用 sort 排序列出 4 欄,再進(jìn)一步轉(zhuǎn)到 tail 命令,最終輸出 10 行顯示使用內(nèi)存最多的進(jìn)程情況。

假如想要發(fā)現(xiàn)哪個(gè)進(jìn)程使用了大量內(nèi)存的話,我通常會(huì)使用 htop 或 top 而非 ps 。

額外的:用 python 快速開啟一個(gè) SMTP 服務(wù)

    python -m smtpd -n -c DebuggingServer localhost:1025

這是一個(gè)用 Python 標(biāo)準(zhǔn)庫 smtpd (用 -m smtpd 指定) 實(shí)現(xiàn)在簡易 SMTP 服務(wù),運(yùn)行于 1025 端口 。

另外三個(gè)參數(shù)的解釋:

    -n 參數(shù)讓 Python 不要進(jìn)行 setuid ( 改變用戶)為 “nobody” ,也就是說直接用你的賬號(hào)來運(yùn)行
    -c DebuggingServer 參數(shù)是讓 Python 運(yùn)行時(shí)在屏幕上輸出調(diào)試及運(yùn)行信息
    localhost:1025 參數(shù)則是讓 Python 在本地的 1025 端口上開啟 SMTP 服務(wù)

另外,假如你想讓程序運(yùn)行于標(biāo)準(zhǔn)的 25 的端口上的話,你必須使用 sudo 命令,因?yàn)橹挥?root 才能在 1-1024 端口上開啟服務(wù)。如下:

    sudo python -m smtpd -n -c DebuggingServer localhost:25
 
1.查看ASCII碼表
man 7 ascii

很多人初學(xué)編程都會(huì)接觸到ascii碼的概念,有時(shí)候?yàn)榱瞬槟硞€(gè)符號(hào)的ascii值,可能還得翻箱倒柜找出當(dāng)年的課本?Linux Manpage里面其實(shí)包含了很多類似的實(shí)用資料,上述命令就能很詳細(xì)的方式解釋ascii編碼,當(dāng)然這里還有在線版。
man命令的第二個(gè)參數(shù)是區(qū)域碼,用來區(qū)分索引詞的范圍,比如printf,在C標(biāo)準(zhǔn)庫里面的printf跟bash當(dāng)中的printf是不同的,前者的查詢是man 3 printf,后者是man 1 printf。如果這個(gè)區(qū)域碼省略,就會(huì)從1開始搜索,直到找到為止。
命令man man可以看到詳細(xì)的解釋。


manpages里面還有一些有趣而且實(shí)用的資料,可能鮮為人知:
man 1 intro – 一篇對(duì)從未接觸過Linux的用戶的簡明教程。
man 2 syscalls – 內(nèi)核系統(tǒng)請(qǐng)求的列表,按內(nèi)核版本注釋分類,系統(tǒng)編程必備。
man 2 select_tut – 關(guān)于select()系統(tǒng)請(qǐng)求的教程。
man 3 string – 在頭文件內(nèi)的所有函數(shù)。
man 3 stdio – 關(guān)于頭文件的使用,標(biāo)準(zhǔn)輸入/輸出庫的說明。
man 3 errno – 所有errorno的取值及說明。(C語言內(nèi)類似其他語言的異常告知機(jī)制)
man 4 console_codes – Linux的終端控制碼及其使用解釋。
man 4 full – 介紹/dev/full這個(gè)總是處于”滿”狀態(tài)的磁盤。(對(duì)應(yīng)/dev/null這個(gè)總是空的設(shè)備)
man 5 proc – 介紹/proc下的文件系統(tǒng)。
man 5 filesystems – 各種Linux文件系統(tǒng)。
第7區(qū)里面的資料通常最酷:
man 7 bootparam – 詳細(xì)解釋內(nèi)核啟動(dòng)參數(shù)。
man 7 charsets – 解釋各種語言的編碼集。(gbk,gb2312等)
man 7 glob – 解釋glob文件名管理機(jī)制的工作過程。
man 7 hier – 解釋Linux文件系統(tǒng)結(jié)構(gòu)各個(gè)部分的作用。
man 7 operator – C語言的運(yùn)算符的列表。
man 7 regex – 介紹正則表達(dá)式。
man 7 suffixes – 常見文件后綴名的列表跟解釋。
man 7 time – Linux的時(shí)鐘機(jī)制解釋。
man 7 units – 數(shù)值單位及其數(shù)值的解釋。
man 7 utf8 – 描述UTF-8編碼。
man 7 url – 解釋URL、URI、URN等的標(biāo)準(zhǔn)。
2.簡易計(jì)時(shí)器
time read
運(yùn)行命令開始算起,到結(jié)束時(shí)按一下Enter,就顯示出整個(gè)過程的時(shí)間,精確到ms級(jí)別。
time是用來計(jì)算一個(gè)進(jìn)程在運(yùn)行到結(jié)束過程耗費(fèi)多少時(shí)間的程序,它的輸出通常有三項(xiàng):
$ time ls /opt


real 0m0.008s
user 0m0.003s
sys 0m0.007s

real指整個(gè)程序?qū)φ鎸?shí)世界而言運(yùn)行所需時(shí)間,user指程序在用戶空間運(yùn)行的時(shí)間,sys指程序?qū)ο到y(tǒng)調(diào)用鎖占用時(shí)間。
read本來是一個(gè)讀取用戶輸入的命令,常見用法是read LINE,用戶輸入并回車后,鍵入的內(nèi)容就被保存到$LINE變量內(nèi),但在鍵入回車前,這個(gè)命令是一直阻塞的。
可見time read這命令靈活地利用了操作系統(tǒng)的阻塞。用這個(gè)命令來測試一壺水多久煮滾應(yīng)該是不錯(cuò)的。
3.遠(yuǎn)程關(guān)掉一臺(tái)WINDOWS機(jī)器
net rpc shutdown -I IP_ADDRESS -U username%password

Windows平臺(tái)上的net命令是比較強(qiáng)大的,因?yàn)槠浜笈_(tái)是一個(gè)RPC類的系統(tǒng)服務(wù),大家應(yīng)該看過win下用net use [url=c:%5Cip%5Cipc$]file:///C|/ip/ipc%24[/url] *這樣一個(gè)命令建立IPC空連接,入侵主機(jī)的事情。
Linux下的net命令是samba組件的程序,通常包含在smbclient內(nèi),可以跟windows主機(jī)的文件、打印機(jī)共享等服務(wù)進(jìn)行通訊,但是也支持rpc命令。
上述命令就是在遠(yuǎn)程Windows主機(jī)上執(zhí)行了shutdown命令。當(dāng)然這不一定成功,關(guān)系到win主機(jī)上面的安全設(shè)置。net命令能夠控制到win主機(jī)就是了。
4.在一個(gè)子SHELL中運(yùn)行一個(gè)命令
(cd /tmp && ls)
當(dāng)然這只是演示,要查看目錄當(dāng)然可以ls /tmp。
好處就是不會(huì)改變當(dāng)前shell的目錄,以及如果命令中設(shè)計(jì)環(huán)境變量,也不會(huì)對(duì)當(dāng)前shell有任何修改。
在Shell編程中還有很多使用上引號(hào)來括住一個(gè)命令:`ls /tmp`,這也是子shell過程??墒巧弦?hào)的方法無法嵌套,而使用小括號(hào)的方法可以,一個(gè)比較糾結(jié)的例子是:
echo $(echo -e [url=c:%5Cx$%28printf]file:///C|/x%24%28printf[/url] “%x” 65))
5.利用中間管道嵌套使用SSH
ssh -t host_A ssh host_B
如果目標(biāo)機(jī)器host_B處于比較復(fù)雜的網(wǎng)絡(luò)環(huán)境,本機(jī)無法直接訪問,但另外一臺(tái)host_A能夠訪問到host_B,而且也能被本機(jī)訪問到,那上述命令就解決了方便登錄host_B的問題。
但理論上這個(gè)過程是可以無限嵌套的,比如:
ssh -t host1 ssh -t host2 ssh -t host3 ssh -t host4 …
嗯那神馬FBI CIA的,有本事來捉我吧~
6.清空屏幕
<CTRL+l>;
這個(gè)跟之前介紹的reset命令重置終端的作用有些類似,其實(shí)都只是發(fā)送一段控制序列,讓終端的顯示復(fù)位。
還可以這樣運(yùn)行:
tput clear
tput是專門用來控制終端的一個(gè)小工具,也挺強(qiáng)大的,詳細(xì)信息運(yùn)行man tput查看。
7.我想知道一臺(tái)服務(wù)器什么時(shí)候重啟完
ping -a IP

系統(tǒng)管理員最常做的事情是重啟系統(tǒng)。但是服務(wù)器的重啟過程往往得花上好幾分鐘,什么你的服務(wù)器4個(gè)scsi卡?16個(gè)硬盤?系統(tǒng)是Redhat?還完全安裝所有組件?好吧,它重啟的時(shí)間都?jí)蚰愠灶D飯了,所以我很想知道它什么時(shí)候回來。
ping命令有個(gè)audible ping參數(shù),-a,當(dāng)它終于ping通你的服務(wù)器時(shí)會(huì)讓小喇叭叫起來。
8.列出你最常用的10條命令
history | awk '{a[$2]++}END{for(i in a){print a " " i}}' | sort -rn | head
這行命令組合得很妙: history輸出用戶了命令歷史;awk統(tǒng)計(jì)并輸出列表;sort排序;head截出前10行。
9.檢查GMAIL新郵件
curl -u you@gmail.com --silent "https://mail.google.com/mail/feed/atom"| <br/>perl -ne \ <br/>' <br/>print "Subject: $1 " if/<title>(.+?)<\/title>/ &&$title++; <br/>print "(from $1)\n" if/<email>(.+?)<\/email>/; <br/>'
Gmail的一個(gè)特色是支持Atom feed輸出郵件列表,所以總是見到很多Gmail郵件提醒器之類的,因?yàn)殚_發(fā)特簡單,atom很方便。
這里只是利用了perl的正則來解析atom(sed/awk也能做到)。
10.用TELNET看《星球大戰(zhàn)》
telnet towel.blinkenlights.nl
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SLAX在虛擬機(jī)下手動(dòng)安裝到硬盤
Linux的目錄結(jié)構(gòu)是什么樣的?
Linux命令行技巧
超全 Linux 基礎(chǔ)命令總結(jié)
Linux基礎(chǔ)入門學(xué)習(xí)筆記20135227黃曉妍
Linux經(jīng)常用到的命令
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服