監測命令的運行時間 time command $ time sleep 5 real 0m5.003s # 程式開始至結束的時間,包括其它進程占用的時間片和IO時間 user 0m0.001s # 進程真正執行占用CPU的時間 sys 0m0.002s # 進程在內核中調用所消耗的CPU時間 use ...
監測命令的運行時間 time command
$ time sleep 5 real 0m5.003s # 程式開始至結束的時間,包括其它進程占用的時間片和IO時間 user 0m0.001s # 進程真正執行占用CPU的時間 sys 0m0.002s # 進程在內核中調用所消耗的CPU時間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分鐘的系統平均負載
- Tasks: 287 total:進程總數
- 2 running:正在運行的進程數
- 285 sleeping:睡眠的進程數
- 0 stopped:停止的進程數
- 0 zombie:僵屍進程數
- 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:虛擬機占用百分比
- 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:任務標誌
df -h
du -sh *軟體安裝 不同於windows,Linux下軟體安裝的方式比較多樣,有些也比較複雜。每種安裝方式都有自己的優點和局限,也都有可能遇到問題。在我們理解了原理之後,藉助谷歌,可以更好地幫助解決問題。 系統包管理器安裝 軟體安裝最方便的、一般也不容易出問題的是利用系統自帶的包管理工具,可以解決大部分的依賴問題。 但也有一些不足,主要3點:
- 需要根用戶的許可權。
- 如果系統版本老,安裝的軟體版本也會比較老。使用新版本有時又會發生衝突。
- 生物信息學中不少軟體不在系統的安裝源裡面。
# 假設當前文件夾下Makefile文件中內容如下 # first: target名字 # echo "compile first": target對應的命令,任何Linux命令都可以 $ cat Makefile first: echo "compile first" all: first second echo "compile all" second: echo "compile second" # 直接運行make,會make第一個出現的target $ make echo "compile first" compile first # make first與直接make相同,因為它出現在第一個 $ make first echo "compile first" compile first # all依賴於first, second,因此make all會先執行make first, make second # 然後才是自己所代表的命令 $ make all echo "compile first" compile first echo "compile second" compile second echo "compile all" compile all有些軟體的安裝,在執行完make後就獲得了可執行程式,可以跳過make install的過程,只需要放入環境變數就可以運行了。但部分軟體還需要一些依賴關係,所以需要執行make install才算完成了完整的安裝。
- make install通常是拷貝make編譯出來的可執行文件或者依賴的庫文件(如果有的話)到configure時的--prefix指定的目錄下。
- 安裝好的軟體放入環境變數, 就可以快樂的運行了。
- 從源碼編譯最難解決的問題就是依賴的庫文件、頭文件、依賴軟體的缺失或版本不匹配,沒有統一的解決辦法,原則就是缺啥補啥。後面提到的Anaconda,會對庫文件的依賴提供一個簡便的解決辦法。
- 三部曲每一步的執行,屏幕上都會輸出比較多的信息,一定仔細看最後有沒有ERROR類的字樣,對判斷軟體有無安裝成功和下一步要怎麼解決問題會很有幫助。
- 首先下載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,則需要檢查下環境變數的設置。
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.72、bioconda bioconda提供了一個虛擬環境,方便軟體的編譯安裝。 R包的安裝 需要註意的也是依賴的軟體或庫文件的版本,同樣的Anaconda提供的lib庫也可以直接拿來用。