《LINUX入門:Linux系統監控命令和軟件安裝》要點:
本文介紹了LINUX入門:Linux系統監控命令和軟件安裝,希望對您有用。如果有疑問,可以聯系我們。
Linux監測命令的運行時間 time command
?
$
time
sleep
5
real? ? 0m5.003s
user? ? 0m0.001s
sys? ? 0m0.002s? ?
?
user+sys是進程實際的CPU時間.如果多線程執行,這個時間可能大于Real.如果IO是瓶頸,則real會大于user+sys (單線程).
?
查看正在運行的命令和其資源使用 top

統計信息區
第一行:任務隊列信息,與uptime命令執行結果相同
- 17:32:34:系統當前時間
- up 3 days, 8:04:主機已運行時間
- 5 users:用戶連接數(不是用戶數,who命令)
- load average: 0.09, 0.12, 0.19:系統平均負載,統計最近1,5,15分鐘的系統平均負載
補充:uptime -V可查詢版本
?
第二行:進程信息
- Tasks: 287 total:進程總數
- 2 running:正在運行的進程數
- 285 sleeping:睡眠的進程數
- 0 stopped:停止的進程數
- 0 zombie:僵尸進程數
第三行:CPU信息(當有多個CPU時,這些內容可能會超過兩行)
- 1.5 us:用戶空間所占CPU百分比
- 0.9 sy:內核空間占用CPU百分比
- 0.0 ni:用戶進程空間內改變過優先級的進程占用CPU百分比
- 97.5 id:空閑CPU百分比
- 0.2 wa:等待輸入輸出的CPU時間百分比
- 0.0 hi:硬件CPU中斷占用百分比
- 0.0 si:軟中斷占用百分比
- 0.0 st:虛擬機占用百分比
第四行:內存信息(與第五行的信息類似與free命令)
- 8053444 total:物理內存總量
- 7779224 used:已使用的內存總量
- 274220 free:空閑的內存總量(free+used=total)
- 359212 buffers:用作內核緩存的內存量
第五行:swap信息
- 8265724 total:交換分區總量
- 33840 used:已使用的交換分區總量
- 8231884 free:空閑交換區總量
- 4358088 cached Mem:緩沖的交換區總量,內存中的內容被換出到交換區,然后又被換入到內存,但是使用過的交換區沒有被覆蓋,交換區的這些內容已存在于內存中的交換區的大小,相應的內存再次被換出時可不必再對交換區寫入.
進程信息區
- PID:進程id
- PPID:父進程id
- RUSER:Real user name(看了好多,都是這樣寫,也不知道和user有什么區別,歡迎補充此處)
- UID:進程所有者的id
- USER:進程所有者的用戶名
- GROUP:進程所有者的組名
- TTY:啟動進程的終端名.不是從終端啟動的進程則顯示為?
- PR:優先級
- NI:nice值.負值表示高優先級,正值表示低優先級
- P:最后使用的CPU,僅在多CPU環境下有意義
- %CPU:上次更新到現在的CPU時間占用百分比
- TIME:進程使用的CPU時間總計,單位秒
- TIME+:進程所使用的CPU時間總計,單位1/100秒
- %MEM:進程使用的物理內存百分比
- VIRT:進程使用的虛擬內存總量,單位kb.VIRT=SWAP+RES
- SWAP:進程使用的虛擬內存中被被換出的大小
- RES:進程使用的、未被換出的物理內存的大小
- CODE:可執行代碼占用的物理內存大小
- DATA:可執行代碼以外的部分(數據段+棧)占用的物理內存大小
- SHR:共享內存大小
- nFLT:頁面錯誤次數
- nDRT:最后一次寫入到現在,被修改過的頁面數
- S:進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸進程)
- COMMAND:命令名/行
- WCHAN:若該進程在睡眠,則顯示睡眠中的系統函數名
- Flags:任務標志
默認情況下,只顯示比較重要的列
?
文件系統和磁盤信息監測
查看系統硬盤大小和分配
軟件安裝
不同于windows,Linux下軟件安裝的方式比較多樣,有些也比較復雜.每種安裝方式都有自己的優點和局限,也都有可能遇到問題.在我們理解了原理之后,借助谷歌,可以更好地幫助解決問題.
系統包管理器安裝
軟件安裝最方便的、一般也不容易出問題的是利用系統自帶的包管理工具,可以解決大部分的依賴問題.
但也有一些不足,主要3點:
- 需要根用戶的權限.
- 如果系統版本老,安裝的軟件版本也會比較老.使用新版本有時又會發生沖突.
- 生物信息學中不少軟件不在系統的安裝源里面.
解決這些問題,就需要自己去軟件官網查找最新的分發包,又有兩種可能,一種是分發包直接就是編譯好的軟件,下載下來設置下可執行屬性并放入環境變量就可以運行了,如blast或bowtie這樣的工具.
?
另一種則是需要從源碼編譯安裝,下面主要講解下這個.
?
源碼編譯安裝
源碼編譯經典的三部曲configure, make, make install.如果不出問題,一步步執行下來就安裝好了.但出了問題,就不是比較容易解決的.如果知道這背后的機制,對解決問題會有很大幫助的.
?
configure是檢查系統的庫文件、類文件、依賴軟件是否存在以及它們的版本是否滿足需求,并根據實際檢測結果生成Makefile的工具.一般是一堆bash命令的組合.通常也需要在這一步配置一些參數.最常用的就是指定軟件的安裝目錄--prefix=/home/ct/soft/specific_name.
?
make則是具體的編譯過程.編譯的語句都寫在了Makefile中.make默認編譯Makefile中出現的第一個target,也可以指定target編譯,并根據Makefile的設置方式依次編譯所有依賴的東西.
?
Makefile通常的格式和布局如下
有些軟件的安裝,在執行完make后就獲得了可執行程序,可以跳過make install的過程,只需要放入環境變量就可以運行了.但部分軟件還需要一些依賴關系,所以需要執行make install才算完成了完整的安裝.
- make install通常是拷貝make編譯出來的可執行文件或者依賴的庫文件(如果有的話)到configure時的--prefix指定的目錄下.
- 安裝好的軟件放入環境變量, 就可以快樂的運行了.
兩點注意:
- 從源碼編譯最難解決的問題就是依賴的庫文件、頭文件、依賴軟件的缺失或版本不匹配,沒有統一的解決辦法,原則就是缺啥補啥.后面提到的Anaconda,會對庫文件的依賴提供一個簡便的解決辦法.
- 三部曲每一步的執行,屏幕上都會輸出比較多的信息,一定仔細看最后有沒有ERROR類的字樣,對判斷軟件有無安裝成功和下一步要怎么解決問題會很有幫助.
Linux包的安裝通用方式主要是這些,后面還會提到兩種虛擬安裝方式,都是為了簡化安裝而提出的.
?
Python包的安裝
在沒有Anaconda(或其前身canopy)出現之前,Python包以其管理混亂、安裝困難著稱.有了Anaconda后,不只python包的安裝簡單了,其它軟件的安裝也都方便了 (詳見后面Anaconda的兩個福利).
- 首先下載Anaconda的安裝包 https://www.continuum.io/downloads.
- Anaconda的安裝包做的很人性化,一個bash腳本,只要運行bash Anacond*x86_64.sh,然后依照提示操作就可以了.
- 安裝好后,設置或刷新下環境變量就可以使用了.
- 此后再安裝python的包只需要執行pip install pakcage_name或conda install pakckage_name就可以了.
- 這里唯一需要注意的就是確認使用的python或pip確實是Anaconda安裝的python或pip.
- which python查看使用的python命令.
- 如果使用的還是系統默認的python,則需要檢查下環境變量的設置.
Anaconda的兩個福利
1、頭文件和庫文件庫
這是Anaconda安裝后的目錄結構
bin ? envs ?Examples ?imports ?lib ? ?LICENSE.txt ?pkgs ? ? share ?var
conda-meta ?etc ? gcc include ?lib64 ?mkspecsplugins ?ssl
其中lib目錄下,一部分是依賴的動態鏈接庫, .so文件;這也是在源碼編譯時最常見的攔路虎.通常,只需要把這個目錄放入環境變量LD_LIBRARY_PATH里面比如export LD_LIBARY_PATH=${LD_LIBARY_PATH}:anaconda_path/lib就可以解決問題.
cairo ? ? ? ? ? ? ? ? ? ?libitm.a ? ? ? ? ? ? ?libQtScript.so.4
cmake ? ? ? ? ? ? ? ? ? ?libitm.la ? ? ? ? ? ? libQtScript.so.4.8
engines ? ? ? ? ? ? ? ? ?libitm.so ? ? ? ? ? ? libQtScript.so.4.8.7
gcc ? ? ? ? ? ? ? ? ? ? ?libitm.so.1 ? ? ? ? ? libQtScriptTools.la
gcj-4.8.5-14 ? ? ? ? ? ? libitm.so.1.0.0 ? ? ? libQtScriptTools.prl
glib-2.0 ? ? ? ? ? ? ? ? libitm.spec ? ? ? ? ? libQtScriptTools.so
libargtable2.a ? ? ? ? ? libjpeg.a ? ? ? ? ? ? libQtScriptTools.so.4
libargtable2.la ? ? ? ? ?libjpeg.la ? ? ? ? ? ?libQtScriptTools.so.4.8
libargtable2.so ? ? ? ? ?libjpeg.so ? ? ? ? ? ?libQtScriptTools.so.4.8.7
libargtable2.so.0 ? ? ? ?libjpeg.so.8 ? ? ? ? ?libQtSql.la
libargtable2.so.0.1.8 ? ?libjpeg.so.8.4.0 ? ? ?libQtSql.prl
libasan.a ? ? ? ? ? ? ? ?libmkl_avx2.so ? ? ? ?libQtSql.so
libasan.la ? ? ? ? ? ? ? libmkl_avx512_mic.so ?libQtSql.so.4
libasan_preinit.o ? ? ? ?libmkl_avx512.so ? ? ?libQtSql.so.4.8
libasan.so ? ? ? ? ? ? ? libmkl_avx.so ? ? ? ? libQtSql.so.4.8.7
2、bioconda
bioconda提供了一個虛擬環境,方便軟件的編譯安裝.
?
R包的安裝
需要注意的也是依賴的軟件或庫文件的版本,同樣的Anaconda提供的lib庫也可以直接拿來用.
本文永久更新鏈接地址:
學習更多LINUX教程,請查看站內專欄,如果有LINUX疑問,可以加QQ交流《LINUX入門:Linux系統監控命令和軟件安裝》。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8881.html