监测命令的运行时间 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分钟的系统平均负载
补充:uptime -V可查询版本
 
第二行:进程信息
  • Tasks: 287 total:进程总数
  • 2 running:正在运行的进程数
  • 285 sleeping:睡眠的进程数
  • 0 stopped:停止的进程数
  • 0 zombie:僵尸进程数
第三行:CPU信息(当有多个CPU时,这些内容可能会超过两行)
  • 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:虚拟机占用百分比
第四行:内存信息(与第五行的信息类似与free命令)
  • 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点:
  • 需要根用户的权限。
  • 如果系统版本老,安装的软件版本也会比较老。使用新版本有时又会发生冲突。
  • 生物信息学中不少软件不在系统的安装源里面。
解决这些问题,就需要自己去软件官网查找最新的分发包,又有两种可能,一种是分发包直接就是编译好的软件,下载下来设置下可执行属性并放入环境变量就可以运行了,如blast或bowtie这样的工具。
 
另一种则是需要从源码编译安装,下面主要讲解下这个。
 
源码编译安装
源码编译经典的三部曲configure, make, make install。如果不出问题,一步步执行下来就安装好了。但出了问题,就不是比较容易解决的。如果知道这背后的机制,对解决问题会有很大帮助的。
 
configure是检查系统的库文件、类文件、依赖软件是否存在以及它们的版本是否满足需求,并根据实际检测结果生成Makefile的工具。一般是一堆bash命令的组合。通常也需要在这一步配置一些参数。最常用的就是指定软件的安装目录--prefix=/home/ct/soft/specific_name。
 
make则是具体的编译过程。编译的语句都写在了Makefile中。make默认编译Makefile中出现的第一个target,也可以指定target编译,并根据Makefile的设置方式依次编译所有依赖的东西。
 
Makefile通常的格式和布局如下
# 假设当前文件夹下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类的字样,对判断软件有无安装成功和下一步要怎么解决问题会很有帮助。
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安装后的目录结构
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提供了一个虚拟环境,方便软件的编译安装。
 
R包的安装
需要注意的也是依赖的软件或库文件的版本,同样的Anaconda提供的lib库也可以直接拿来用。

Linux命令运行监测和软件安装的更多相关文章

  1. Linux基础知识第九讲,linux中的解压缩,以及软件安装命令

    目录 Linux基础知识第九讲,linux中的解压缩,以及软件安装命令 一丶Linux Mac Windows下的压缩格式简介 2.压缩以及解压缩 3.linux中的软件安装以及卸载 1.apt进行安 ...

  2. cv:显示Linux命令运行进度

    cv: 显示 cp.mv 等命令的进度 2014-07-14 By toy Posted in Apps Edit on GitHub 在 Linux 系统中 , 大多数命令从来都是信奉 “ 沉默是金 ...

  3. 【转载】基于Linux命令行KVM虚拟机的安装配置与基本使用

    基于Linux命令行KVM虚拟机的安装配置与基本使用 https://alex0227.github.io/2018/06/06/%E5%9F%BA%E4%BA%8ELinux%E5%91%BD%E4 ...

  4. Linux 命令 watch 监测命令的运行结果

    watch 命令周期性地执行命令,全屏显示输出命令.watch命令可以监测一个命令的运行结果 命令参数 -n, --interval 设置间隔时间.默认情况下,watch 每隔 2 秒执行一次命令. ...

  5. linux命名详解及其软件安装实例

    始于cd,ls命令 好啦,步入正题,我使用的linux连接工具为xshell,mRemoteNG,对两款工具不做介绍啦,你可以百度一下,实在不会入左上方群. 进入之后,便是上面的界面黑乎乎一片,对于初 ...

  6. linux网络基础设置 以及 软件安装

    ifconfig #查看所有已激活的网卡信息 临时配置 #yum install net-tools -y 默认ifconfig是没有安装的,可能需要安装 ifconfig eth0 #查看单独一块网 ...

  7. linux deb及rpm格式软件安装

    deb格式软件安装 deb包是debian,ubuntu等LINUX发行版的软件安装包,是类似于rpm的软件包,而非debian,ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装 ...

  8. Mint(Linux)系统设置优化及其常用软件安装笔记

    LInux /home下中文目录如何修改成英文? 打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk-update 跳出对话框询问是否将目录转化为英文 ...

  9. Linux常用的三种软件安装方式

    一:Linux源码安装    1.解压源码包文件    源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式:   ...

随机推荐

  1. easyui中点击datagrid的分页刷新按钮,数据无法更新到最新状态

    原因分析:点击刷新按钮是对当前页数据进行reload,因此所传的请求参数皆为上一次加载当前页的参数即datagrid的load方法中的参数,主要是因为请求的最终时间无法更新到最新状态 解决方案:对点击 ...

  2. win7下 sublime text2操作快捷键 - leafu

    Ctrl+L            选择整行(按住-继续选择下行)                           Ctrl+KK          从光标处删除至行尾               ...

  3. png图片解码

    PNG.可移植网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的"PNG's Not GIF",是一种位图文件(bitmap ...

  4. Python开发【1.4数据类型】

    1.数字 数字数据类型用于存储数值. 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象. # 创建对象 var1 = 1 var2 = 2 # 删除对象 del var1 del ...

  5. IE6\7\8 :last-child 和 :first-chlid 兼容

    IE9以下不支持last-child ,只支持first-child,边框尽量用上边框.

  6. HDU 1505 City Game(DP)

    City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. 【Codevs1183】泥泞的道路

    Position: http://codevs.cn/problem/1183/ List Codevs1183 泥泞的道路 List Description Input Output Sample ...

  8. 21. Ext中表格自适应高度

    转自:https://blog.csdn.net/happy492/article/details/6401099 1. 下面的代码中width和height的初始值为tab的开始大小,当浏览器窗口变 ...

  9. E2017E0605-hm

    carbon copy 抄送, 抄写与送达 blind carbon copy 密送 blind   adj. 失明的; 盲目的,轻率的; contact    n. 接触; 触点 v 联系,接触; ...

  10. [App Store Connect帮助]三、管理 App 和版本(6.3)转让 App:接受 App 转让

    您必须在转让发起的 60 天内接受转让. 必要职能:“帐户持有人”职能.请参见职能权限. 以具有“帐户持有人”职能用户的身份登录至 App Store Connect. 系统会显示一条通知,指示 Ap ...