监测命令的运行时间 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. HTML5+CSS3设计界面

    近期在做一个关于房屋装修的手机上的项目,前台是用H5+C3完毕的,挂在微信上.全部相对来说不是非常难. 这段时间通过敲Html5+Css3.分享一些自己觉得值得学习的知识. 都非常easy.自己操作一 ...

  2. 模式识别之ocr---文字识别Tesseract-OCR 进行文字识别 VS2010

    近日做铸件文字识别的项目,需要识别铸件上的字符和数字,找到开源的识别库Tesseract,下面简单记录下怎么使用. 首先在项目主页http://code.google.com/p/tesseract- ...

  3. 剑指offer面试题18-树的子结构

    题目: 输入两颗二叉树A和B,推断B是不是A的子结构. 树的结构例如以下: package com.aii.algorithm; public class TreeNode { int value; ...

  4. javascript里的prototype

    在javascript中,prototype是函数的一个固有属性,其他对象,比如字符串什么的,并没有这个属性. 这个属性做什么用呢? 1.用于该函数的所有实例进行共享 比如,共同的属性,共同的方法.类 ...

  5. iOS开发——高级篇——Runtime实际应用

    前言 本篇主要介绍Runtime在开发中的一些使用场景,顺便讲解了下MJExtension的底层实现 一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制, ...

  6. Codeforces 690 C3. Brain Network (hard) LCA

    C3. Brain Network (hard)   Breaking news from zombie neurology! It turns out that – contrary to prev ...

  7. vijos - P1077克隆龙 (找规律 + 指数型母函数 + python)

    P1077克隆龙 Accepted 标签:[显示标签] 描写叙述 如今龙的克隆已成为可能,龙基因由ACTG字母组成,而龙的基因有例如以下特点: 1.A在基因中的出现为偶数次(包含0): 2.C的情况也 ...

  8. [Codeforces 623A] Graph and String

    [题目链接] http://codeforces.com/contest/623/problem/A [算法] 首先 , 所有与其他节点都有连边的节点需标号为'b' 然后 , 我们任选一个节点 , 将 ...

  9. gitlab-ce平台调试

    SMTP使用QQ exmail 遇到的问题:使用qinrui@easyunion.net对516059158@qq.com能发送验证邮件,但是无法打开验证连接

  10. Redis集群创建和配置

    1.检查GCC是否安装,可以看看版本号 gcc -v 安装命令:yum install gcc-c++ 2.安装Ruby和Rubygems 如果有网的话,则通过yum命令进行安装,自动将关联的依赖包全 ...