生物信息Linux学习6

命令运行监测


1.检测命令的运行时间timecommand


ct@ehbio:~$ time sleep 5
real0m5.003s#程序开始至结束的时间,包括其它进程占用的时间片和IO时间
user0m0.001s#进程真正执行占用CPU的时间,
sys0m0.002s#进程在内核中调用所消耗的CPU时间
user+sys是进程实际的CPU时间。如果多线程执行,这个时间可能大于Real。如果IO是瓶颈,则real会大于user+sys (单线程)。

2.查看正在运行的命令和其资源使用top


  • top输出界面第一行主要信息是负载显示,分别是1分钟、5分钟、15分钟前到现在的任务队列的平均长度。
    一般与CPU数目相当为好,过大系统负载超额,反应慢。 在top输出界面输入u,会提示输入用户名,以查看某个用户的进程。
    *重点关注的是%MEM列,查看系统占用的内存是否超出。
    ct@ehbio:~$ top -a #按内存排序显示
    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.查看系统进程ps auwx| grep'process_name'

    文件系统和磁盘信息监测

    查看系统硬盘大小和分配
    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下软件安装的方式比较多样,有些也比较复杂。每种安装方式都有自己的优点和局限,也都有可能遇到问题。在我们理解了原理之后,借助谷歌,可以更好地帮助解决问题。

    系统包管理器安装

    软件安装最方便的、一般也不容易出问题的是利用系统自带的包管理工具,可以解决大部分的依赖问题。
    # centos
    #如果长时间没更新,先运行下update
    yum update
    #如果不知道软件具体名字,可以先用一个关键字search一下,选择正式的名字
    #需要注意的是一般的服务器都是64
    bit,需要选x86_64版本
    yum search soft_name or soft_description
    yum search soft_official_name
    
    但也有一些不足,主要3点:
    1.需要根用户的权限。
    2.如果系统版本老,安装的软件版本也会比较老。使用新版本有时又会发生冲突。
    3.生物信息学中不少软件不在系统的安装源里面。
    解决这些问题,就需要自己去软件官网查找最新的分法包,又有两种可能,一种是分法包直接就是编译好的软件,下载下来设置下可执行属性并放入环境变量就可以运行了,如于blastbowtie这样的工具。
    另一种则是需要从源码编译安装,下面主要讲解下这个。

    源码编译安装

    源码编译经典的三部曲configure, make, make install。如果不出问题,对着执行下来就安装好了,也不一定知其所以然。但出了问题,就不是比较容易解决的。如果知道这背后的机制,还是会有帮助的。
  • configure是检查系统的库文件、类文件、依赖软件是否存在以及它们的版本是否满族需求,并根据实际检测结果生成Makefile的工具。一般是一堆bash命令的组合。通常也需要在这一步配置一些参数。最常用的就是指定软件的安装目录--prefix=/home/ct/soft/specific_name
  • make则是具体的编译过程。编译的语句都写在了Makefile中。make默认编译Makefile中出现的第一个target,也可以指定target编译,并根据Makefile的设置方式依次编译所有依赖的东西。
    Makefile通常的格式和布局如下,有兴趣的可以自己去学,或者我们再出一个教程。
    #假设当前文件夹下Makefile文件中内容如下
    ct@ehbio:~$ cat Makefile
    #first: target名字
    #echo "compile first": target对应的命令,任何Linux命令都可以
    first:
    echo "compile first"
    all: first second
    echo "compile all"
    second:
    echo "compile second"
    #直接运行make,会make第一个出现的target
    ct@ehbio:~$ make
    echo "compile first"
    compile first
    #make first与直接make相同,因为它出现在第一个
    ct@ehbio:~$ make first
    echo "compile first"
    compile first
    #all依赖于first, second,因此make all会先执行make first, make second
    #然后才是自己所代表的命令
    ct@ehbio:~$ 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指定的目录下。
    安装好的软件放入环境变量,就可以快乐的运行了。
    两条注意:
    从源码编译最难解决的问题就是依赖的库文件、头文件、其它软件的缺失或版本不匹配,没有统一的解决办法,原则就是缺啥补啥
    *三部曲每一步的执行,屏幕上都会输出比较多的信息,一定仔细看最后有没有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_nameconda install pakckage_name就可以了。
    这里唯一需要注意的就是确认使用的pythonpip确实是Anaconda安装的pythonpipwhich python查看使用的python命令。
    *如果使用的还是系统默认的python,则需要检查下环境变量的设置。

    Anaconda的两个福利

    1.头文件和库文件库
    这是Anaconda安装后的目录结构
    binenvsExamplesimportslibLICENSE.txtpkgssharevar
    conda-metaetcgcc includelib64mkspecspluginsssl
    
    其中lib目录下,一部分是依赖的动态链接库, .so文件;这也是在源码编译时最常见的拦路虎。通常,只需要把这个目录放入环境变量LD_LIBRARY_PATH里面比如export LD_LIBARY_PATH=${LD_LIBARY_PATH}:anaconda_path/lib就可以解决问题。
    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提供了一个虚拟环境,方便软件的编译安装。具体的我没用过,可以读下徐洲更的生信软件的好帮手-bioconda。

    R包的安装

    R包的安装具体看之前的R教程。
    需要注意的也是依赖的软件或库文件的版本,同样的Anaconda提供的lib库也可以直接拿来用。

    备注

    文中凡是提到环境变量的地方都可链接到之前提到的环境变量使用的文章,请务必仔细读两遍。
    如果软件版本或依赖实在解决不了的,用Docker,虚拟出一个新的系统来解决,具体见。

    Original link

    原文链接

    微信公众号


你可能感兴趣的:(生物信息Linux学习6)