生物信息Linux學(xué)習(xí)6

命令運(yùn)行監(jiān)測(cè)


1.檢測(cè)命令的運(yùn)行時(shí)間timecommand


ct@ehbio:~$ time sleep 5
real0m5.003s#程序開(kāi)始至結(jié)束的時(shí)間,包括其它進(jìn)程占用的時(shí)間片和IO時(shí)間
user0m0.001s#進(jìn)程真正執(zhí)行占用CPU的時(shí)間,
sys0m0.002s#進(jìn)程在內(nèi)核中調(diào)用所消耗的CPU時(shí)間
user+sys是進(jìn)程實(shí)際的CPU時(shí)間。如果多線程執(zhí)行,這個(gè)時(shí)間可能大于Real。如果IO是瓶頸,則real會(huì)大于user+sys (單線程)。

2.查看正在運(yùn)行的命令和其資源使用top


  • top輸出界面第一行主要信息是負(fù)載顯示,分別是1分鐘、5分鐘、15分鐘前到現(xiàn)在的任務(wù)隊(duì)列的平均長(zhǎng)度。
    一般與CPU數(shù)目相當(dāng)為好,過(guò)大系統(tǒng)負(fù)載超額,反應(yīng)慢。 在top輸出界面輸入u,會(huì)提示輸入用戶名,以查看某個(gè)用戶的進(jìn)程。
    *重點(diǎn)關(guān)注的是%MEM列,查看系統(tǒng)占用的內(nèi)存是否超出。
    ct@ehbio:~$ top -a #按內(nèi)存排序顯示
    top - 09:02:11 up 224 days,8:34,30 users,load average: 40, 33,28
    Tasks: 1561 total,1 running, 1550 sleeping,0 stopped,10 zombie
    Cpu(s):0.6%us,0.2%sy,0.0%ni, 99.2%id,0.0%wa,0.0%hi,0.0%si,0.0%st
    Mem:2642768880k total, 2094619800k used, 548149080k free,4310240k buffers
    Swap: 86472700k total, 73226016k used,13246684k free, 193383748k cached
    PIDUSERPRNIVIRTRESSHR S %CPU %MEMTIME+COMMAND
    32527 ct200 2631m 1.7g 1332 S0.00.7 100:34.87 rsem-run-em
    29273 ct200 4094m 692m 3396 S0.00.345:18.83 java -Xmx1000m
    40148 mysql200 21.9g 606m 6116 S1.30.22536:06 /usr/sbin/mysqld
    31040 ct200 1887m77m 2604 S0.30.0 180:43.16 [celeryd:
    
    3.查看系統(tǒng)進(jìn)程ps auwx| grep'process_name'

    文件系統(tǒng)和磁盤(pán)信息監(jiān)測(cè)

    查看系統(tǒng)硬盤(pán)大小和分配
    ct@ehbio:~$ df -h
    FilesystemSizeUsedAvailUse% Mounted on
    /dev/sda3193G112G71G62% /
    tmpfs127G104K127G1% /dev/shm
    /dev/sda2477M102M351M23% /boot
    /dev/sda1200M264K200M1% /boot/efi
    /dev/mapper/ehbiobp1137T10T127T7% /ehbioB
    /dev/mapper/ehbiocp1137T32T104.8T23% /ehbioC
    /dev/mapper/ehbiodp1137T56T81T41% /ehbioD
    
    ct@ehbio:~$ du -sh *
    268Mblog
    4.0KbrowserMimic.py
    5.6GCAFE
    386Mchip
    73Mclass
    4.0Kconfig.file
    4.0Kdo_not_del_r_test.Rmd
    7.2Mehbio
    20Kehbio_logo.png
    12Kehbio_weixin.jpg
    4.0KGrid_with_line.Rmd
    8.0Kheatmap_nonlinear.pdf
    8.0Kheatmap_nooutlier.pdf
    

    軟件安裝

    不同于windows,Linux下軟件安裝的方式比較多樣,有些也比較復(fù)雜。每種安裝方式都有自己的優(yōu)點(diǎn)和局限,也都有可能遇到問(wèn)題。在我們理解了原理之后,借助谷歌,可以更好地幫助解決問(wèn)題。

    系統(tǒng)包管理器安裝

    軟件安裝最方便的、一般也不容易出問(wèn)題的是利用系統(tǒng)自帶的包管理工具,可以解決大部分的依賴問(wèn)題。
    # centos
    #如果長(zhǎng)時(shí)間沒(méi)更新,先運(yùn)行下update
    yum update
    #如果不知道軟件具體名字,可以先用一個(gè)關(guān)鍵字search一下,選擇正式的名字
    #需要注意的是一般的服務(wù)器都是64
    bit,需要選x86_64版本
    yum search soft_name or soft_description
    yum search soft_official_name
    
    但也有一些不足,主要3點(diǎn):
    1.需要根用戶的權(quán)限。
    2.如果系統(tǒng)版本老,安裝的軟件版本也會(huì)比較老。使用新版本有時(shí)又會(huì)發(fā)生沖突。
    3.生物信息學(xué)中不少軟件不在系統(tǒng)的安裝源里面。
    解決這些問(wèn)題,就需要自己去軟件官網(wǎng)查找最新的分法包,又有兩種可能,一種是分法包直接就是編譯好的軟件,下載下來(lái)設(shè)置下可執(zhí)行屬性并放入環(huán)境變量就可以運(yùn)行了,如于blastbowtie這樣的工具。
    另一種則是需要從源碼編譯安裝,下面主要講解下這個(gè)。

    源碼編譯安裝

    源碼編譯經(jīng)典的三部曲configure, make, make install。如果不出問(wèn)題,對(duì)著執(zhí)行下來(lái)就安裝好了,也不一定知其所以然。但出了問(wèn)題,就不是比較容易解決的。如果知道這背后的機(jī)制,還是會(huì)有幫助的。
  • configure是檢查系統(tǒng)的庫(kù)文件、類(lèi)文件、依賴軟件是否存在以及它們的版本是否滿族需求,并根據(jù)實(shí)際檢測(cè)結(jié)果生成Makefile的工具。一般是一堆bash命令的組合。通常也需要在這一步配置一些參數(shù)。最常用的就是指定軟件的安裝目錄--prefix=/home/ct/soft/specific_name。
  • make則是具體的編譯過(guò)程。編譯的語(yǔ)句都寫(xiě)在了Makefile中。make默認(rèn)編譯Makefile中出現(xiàn)的第一個(gè)target,也可以指定target編譯,并根據(jù)Makefile的設(shè)置方式依次編譯所有依賴的東西。
    Makefile通常的格式和布局如下,有興趣的可以自己去學(xué),或者我們?cè)俪鲆粋€(gè)教程。
    #假設(shè)當(dāng)前文件夾下Makefile文件中內(nèi)容如下
    ct@ehbio:~$ cat Makefile
    #first: target名字
    #echo "compile first": target對(duì)應(yīng)的命令,任何Linux命令都可以
    first:
    echo "compile first"
    all: first second
    echo "compile all"
    second:
    echo "compile second"
    #直接運(yùn)行make,會(huì)make第一個(gè)出現(xiàn)的target
    ct@ehbio:~$ make
    echo "compile first"
    compile first
    #make first與直接make相同,因?yàn)樗霈F(xiàn)在第一個(gè)
    ct@ehbio:~$ make first
    echo "compile first"
    compile first
    #all依賴于first, second,因此make all會(huì)先執(zhí)行make first, make second
    #然后才是自己所代表的命令
    ct@ehbio:~$ make all
    echo "compile first"
    compile first
    echo "compile second"
    compile second
    echo "compile all"
    compile all
    
    有些軟件的安裝,在執(zhí)行完make后就獲得了可執(zhí)行程序,可以跳過(guò)make install的過(guò)程,只需要放入環(huán)境變量就可以運(yùn)行了。但部分軟件還需要一些依賴關(guān)系,所以需要執(zhí)行make install才算完成了完整的安裝。
  • make install通常是拷貝make編譯出來(lái)的可執(zhí)行文件或者依賴的庫(kù)文件(如果有的話)到configure時(shí)的--prefix指定的目錄下。
    安裝好的軟件放入環(huán)境變量,就可以快樂(lè)的運(yùn)行了。
    兩條注意:
    從源碼編譯最難解決的問(wèn)題就是依賴的庫(kù)文件、頭文件、其它軟件的缺失或版本不匹配,沒(méi)有統(tǒng)一的解決辦法,原則就是缺啥補(bǔ)啥。
    *三部曲每一步的執(zhí)行,屏幕上都會(huì)輸出比較多的信息,一定仔細(xì)看最后有沒(méi)有ERROR類(lèi)的字樣,對(duì)判斷軟件有無(wú)安裝成功和下一步要怎么做會(huì)很有幫助。
    Linux包的安裝的通用方式主要這些,后面還會(huì)提到兩種虛擬安裝方式,也都是為了簡(jiǎn)化安裝而提出的。

    Python包的安裝

    在沒(méi)有Anaconda(或其前身canopy)出現(xiàn)之前,Python包以其管理混亂、安裝困難著稱(chēng)。有了Anaconda后,不只python包的安裝簡(jiǎn)單了,其它軟件的安裝也都方便了(詳見(jiàn)后面Anaconda的兩個(gè)福利)。
    *首先下載Anaconda的安裝包https://www.continuum.io/downloads。
  • Anaconda的安裝包做的很人性化,一個(gè)bash腳本,只要運(yùn)行bash Anacond*x86_64.sh,然后按照提示操作就可以了。
    按照好后,設(shè)置或刷新下環(huán)境變量就可以使用了。 此后再安裝python的包只需要執(zhí)行pip install pakcage_nameconda install pakckage_name就可以了。
    這里唯一需要注意的就是確認(rèn)使用的pythonpip確實(shí)是Anaconda安裝的pythonpip。 which python查看使用的python命令。
    *如果使用的還是系統(tǒng)默認(rèn)的python,則需要檢查下環(huán)境變量的設(shè)置。

    Anaconda的兩個(gè)福利

    1.頭文件和庫(kù)文件庫(kù)
    這是Anaconda安裝后的目錄結(jié)構(gòu)
    binenvsExamplesimportslibLICENSE.txtpkgssharevar
    conda-metaetcgcc includelib64mkspecspluginsssl
    
    其中l(wèi)ib目錄下,一部分是依賴的動(dòng)態(tài)鏈接庫(kù), .so文件;這也是在源碼編譯時(shí)最常見(jiàn)的攔路虎。通常,只需要把這個(gè)目錄放入環(huán)境變量LD_LIBRARY_PATH里面比如export LD_LIBARY_PATH=${LD_LIBARY_PATH}:anaconda_path/lib就可以解決問(wèn)題。
    cairolibitm.alibQtScript.so.4
    cmakelibitm.lalibQtScript.so.4.8
    engineslibitm.solibQtScript.so.4.8.7
    gcclibitm.so.1libQtScriptTools.la
    gcj-4.8.5-14libitm.so.1.0.0libQtScriptTools.prl
    glib-2.0libitm.speclibQtScriptTools.so
    libargtable2.alibjpeg.alibQtScriptTools.so.4
    libargtable2.lalibjpeg.lalibQtScriptTools.so.4.8
    libargtable2.solibjpeg.solibQtScriptTools.so.4.8.7
    libargtable2.so.0libjpeg.so.8libQtSql.la
    libargtable2.so.0.1.8libjpeg.so.8.4.0libQtSql.prl
    libasan.alibmkl_avx2.solibQtSql.so
    libasan.lalibmkl_avx512_mic.solibQtSql.so.4
    libasan_preinit.olibmkl_avx512.solibQtSql.so.4.8
    libasan.solibmkl_avx.solibQtSql.so.4.8.7
    


  1. bioconda
    bioconda提供了一個(gè)虛擬環(huán)境,方便軟件的編譯安裝。具體的我沒(méi)用過(guò),可以讀下徐洲更的生信軟件的好幫手-bioconda。

    R包的安裝

    R包的安裝具體看之前的R教程。
    需要注意的也是依賴的軟件或庫(kù)文件的版本,同樣的Anaconda提供的lib庫(kù)也可以直接拿來(lái)用。

    備注

    文中凡是提到環(huán)境變量的地方都可鏈接到之前提到的環(huán)境變量使用的文章,請(qǐng)務(wù)必仔細(xì)讀兩遍。
    如果軟件版本或依賴實(shí)在解決不了的,用Docker,虛擬出一個(gè)新的系統(tǒng)來(lái)解決,具體見(jiàn)。

    Original link

    原文鏈接

    微信公眾號(hào)


?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容