命令运行监测
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列,查看系统占用的内存是否超出。
3.查看系统进程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:
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下软件安装的方式比较多样,有些也比较复杂。每种安装方式都有自己的优点和局限,也都有可能遇到问题。在我们理解了原理之后,借助谷歌,可以更好地帮助解决问题。系统包管理器安装
软件安装最方便的、一般也不容易出问题的是利用系统自带的包管理工具,可以解决大部分的依赖问题。
但也有一些不足,主要3点:# centos #如果长时间没更新,先运行下update yum update #如果不知道软件具体名字,可以先用一个关键字search一下,选择正式的名字 #需要注意的是一般的服务器都是64 bit,需要选x86_64版本 yum search soft_name or soft_description yum search soft_official_name
1.需要根用户的权限。
2.如果系统版本老,安装的软件版本也会比较老。使用新版本有时又会发生冲突。
3.生物信息学中不少软件不在系统的安装源里面。
解决这些问题,就需要自己去软件官网查找最新的分法包,又有两种可能,一种是分法包直接就是编译好的软件,下载下来设置下可执行属性并放入环境变量就可以运行了,如于blast
或bowtie
这样的工具。
另一种则是需要从源码编译安装,下面主要讲解下这个。源码编译安装
源码编译经典的三部曲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_name
或conda install pakckage_name
就可以了。
这里唯一需要注意的就是确认使用的python
或pip
确实是Anaconda安装的python
或pip
。which python
查看使用的python命令。
*如果使用的还是系统默认的python,则需要检查下环境变量的设置。Anaconda的两个福利
1.头文件和库文件库
这是Anaconda安装后的目录结构
其中lib目录下,一部分是依赖的动态链接库,binenvsExamplesimportslibLICENSE.txtpkgssharevar conda-metaetcgcc includelib64mkspecspluginsssl
.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
- bioconda
bioconda提供了一个虚拟环境,方便软件的编译安装。具体的我没用过,可以读下徐洲更的生信软件的好帮手-bioconda。R包的安装
R包的安装具体看之前的R教程。
需要注意的也是依赖的软件或库文件的版本,同样的Anaconda提供的lib库也可以直接拿来用。备注
文中凡是提到环境变量的地方都可链接到之前提到的环境变量使用的文章,请务必仔细读两遍。
如果软件版本或依赖实在解决不了的,用Docker,虚拟出一个新的系统来解决,具体见。Original link
原文链接微信公众号