命令運(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)存是否超出。
3.查看系統(tǒng)進(jìn)程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: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% /ehbioDct@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)題。
但也有一些不足,主要3點(diǎ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
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)行了,如于blast或bowtie這樣的工具。
另一種則是需要從源碼編譯安裝,下面主要講解下這個(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è)教程。
有些軟件的安裝,在執(zhí)行完#假設(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 allmake后就獲得了可執(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_name或conda install pakckage_name就可以了。
這里唯一需要注意的就是確認(rèn)使用的python或pip確實(shí)是Anaconda安裝的python或pip。which python查看使用的python命令。
*如果使用的還是系統(tǒng)默認(rèn)的python,則需要檢查下環(huán)境變量的設(shè)置。Anaconda的兩個(gè)福利
1.頭文件和庫(kù)文件庫(kù)
這是Anaconda安裝后的目錄結(jié)構(gòu)
其中l(wèi)ib目錄下,一部分是依賴的動(dòng)態(tài)鏈接庫(kù),binenvsExamplesimportslibLICENSE.txtpkgssharevar conda-metaetcgcc includelib64mkspecspluginsssl.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
- 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)
?