Linux学习 - 命令运行监测和软件安装

命令运行监测

监测命令的运行时间 time command

ct@ehbio:~$ time sleep 5

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

查看正在运行的命令和其资源使用 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

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                  
32527 ct        20   0 2631m 1.7g 1332 S  0.0  0.7 100:34.87 rsem-run-em 
29273 ct        20   0 4094m 692m 3396 S  0.0  0.3  45:18.83 java -Xmx1000m
40148 mysql     20   0 21.9g 606m 6116 S  1.3  0.2   2536:06 /usr/sbin/mysqld
31040 ct        20   0 1887m  77m 2604 S  0.3  0.0 180:43.16 [celeryd:

查看系统进程 ps auwx | grep 'process_name'

文件系统和磁盘信息监测

查看系统硬盘大小和分配

ct@ehbio:~$ df -h
Filesystem            Size  Used   Avail   Use% Mounted on
/dev/sda3             193G  112G     71G    62% /
tmpfs                 127G  104K    127G     1% /dev/shm
/dev/sda2             477M  102M    351M    23% /boot
/dev/sda1             200M  264K    200M     1% /boot/efi
/dev/mapper/ehbiobp1  137T   10T    127T     7% /ehbioB
/dev/mapper/ehbiocp1  137T   32T  104.8T    23% /ehbioC
/dev/mapper/ehbiodp1  137T   56T     81T    41% /ehbioD
ct@ehbio:~$ du -sh *
268M    blog
4.0K    browserMimic.py
5.6G    CAFE
386M    chip
73M    class
4.0K    config.file
4.0K    do_not_del_r_test.Rmd
7.2M    ehbio
20K    ehbio_logo.png
12K    ehbio_weixin.jpg
4.0K    Grid_with_line.Rmd
8.0K    heatmap_nonlinear.pdf
8.0K    heatmap_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指定的目录下。
  • 安装好的软件放入环境变量, 就可以快乐的运行了。

两点注意:

  • 从源码编译最难解决的问题就是依赖的库文件、头文件、依赖软件的缺失或版本不匹配,没有统一的解决办法,原则就是缺啥补啥。后面提到的Anaconda,会对库文件的依赖提供一个简便的解决办法。
  • 三部曲每一步的执行,屏幕上都会输出比较多的信息,一定仔细看最后有没有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安装的pythonpip

Anaconda的两个福利

  1. 头文件和库文件库

这是Anaconda安装后的目录结构

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.7

2. bioconda

bioconda提供了一个虚拟环境,方便软件的编译安装。具体的我没用过,可以读下 徐洲更的生信软件的好帮手-bioconda。

R包的安装

R包的安装具体看之前的R教程

需要注意的也是依赖的软件或库文件的版本,同样的Anaconda提供的lib库也可以直接拿来用。

备注

文中凡是提到环境变量的地方都可链接到之前提到的环境变量使用的文章,请务必仔细读两遍,读两遍,读两遍

如果软件版本或依赖因为系统问题实在解决不了的,用Docker,虚拟出一个新的系统来解决,具体见用了Docker,妈妈再也不担心我的软件安装了 - 基础篇。利用Docker安装的软件,可以运行于任何有Docker环境的系统,对可重复性编程和服务器迁移后软件的安装都很有利。

原文发布于微信公众号 - 生信宝典(Bio_data)

原文发表时间:2017-07-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小尘哥的专栏

中小团队落地配置中心详解

对比了Disconf、Apollo等方案,最终选择了Etcd+Confd的方案,基本符合上边的原则,且Etcd我们在部署Kubernetes的时候已经有过使用,...

37620
来自专栏北京马哥教育

使用 Nginx 提升网站访问速度

本文主要介绍如何在 Linux 系统上安装高性能的 HTTP 服务器 —— Nginx、并在不改变原有网站结构的条件下用 Nginx 来提升网站的访问速度。 N...

49180
来自专栏SDNLAB

从数据库分析OpenStack创建虚机流程

治大国若烹小鲜,学OpenStack亦是如此。每一个深入学习OpenStack的人都会从虚拟机创建流程开始自己的OpenStack代码分析之旅,因为它贯穿核心组...

17520
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(九):初识后台管理

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

42430
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第十九天 Linux学习【悟空教程】

UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。不过UNIX有免费版的,例如:NetBSD等类似UNIX版本。

19440
来自专栏信安之路

路由器漏洞 EXP 开发实践

本文主要以 CVE-2013-0230 漏洞为例,讲解路由器上缓冲区漏洞的 exp 编写。

25500
来自专栏FreeBuf

详解OSSIM-OSSEC WIN 4771案例

介绍 OSSIME中的HIDS是通过OSSEC来实现的,OSSEC采用服务端和客户端模式,主要通过文件完整性监视,日志监视,rootcheck和进程监视来主动监...

546100
来自专栏容器云生态

Openstack平台搭建之第三天

Openstack平台搭建之第三天 If you have any question ,please contact me by weichuangxxb@si...

22690
来自专栏恰童鞋骚年

借助GitHub托管你的项目代码

PS:话说自己注册了GitHub都很久了,却没有怎么去弄,现在系统学习一下,也把自己的学习经历总结下来share给大家,希望大家都能把GitHub用起来,把你的...

12230
来自专栏中国白客联盟

PIMS三个漏洞+里程密最新版V2.3 SQL注入漏洞

pims在线订单管理系统V4.2.7重装漏洞 程序整天结构如下 ? 安装程序在install目录下,虽然index有验证,代码如下 <?php //检测重...

43860

扫码关注云+社区

领取腾讯云代金券