现在的位置: 首页 > 综合 > 正文

linux 指令学习 linux中随手可得的测试、调试、性能检验工具

2017年11月04日 ⁄ 综合 ⁄ 共 6846字 ⁄ 字号 评论关闭
wget -c 'http://sourceforge.net/projects/boost/files/boost/1.50.0/boost_1_50_0.tar.bz2/download'
w3m index.html
configure ,make ,make install
mount ,dd ,make2fs,sync
apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
apt-get命令一般需要root权限执行,所以一般跟着sudo命令
sudo apt-get xxxx

编辑本段apt命令用法

packagename指代为软件包的名称

apt-get update

在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。

apt-get install packagename

安装一个新软件包(参见下文的aptitude

apt-get remove packagename

卸载一个已安装的软件包(保留配置文档)
apt-get --purge remove packagename卸载一个已安装的软件包(删除配置文档)

apt-get autoremove packagename

同上,比上面的要删除的彻底一点

dpkg --force-all --purge packagename

有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险。

apt-get autoclean

apt会把已装或已卸的软件都备份在硬盘上,所以假如需要空间的话,能够让这个命令来删除您已删掉的软件

apt-get clean

这个命令会把安装的软件的备份也删除,但是这样不会影响软件的使用。

apt-get upgrade

可以使用这条命令更新软件包,apt-get upgrade不仅可以从相同版本号的发布版中更新软件包,也可以从新版本号的发布版中更新软件包,尽管实现后一种更新的推荐命令为apt-get dist-upgrade;
在运行apt-get upgrade命令时加上-u选项很有用(即:apt-get -u upgrade)。这个选项让APT显示完整的可更新软件包列表。不加这个选项,你就只能盲目地更新。APT会下载每个软件包的最新更新版本,然后以合理的次序安装它们。注意在运行该命令前应先运行 apt-get update更新数据库。更新任何已安装的软件包。[1]

apt-get dist-upgrade

将系统升级到新版本

apt-cache search string

在软件包列表中搜索字符串
dpkg -l package-name-pattern列出任何和模式相匹配的软件包。假如您不知道软件包的全名,您能够使用“*package-name-pattern*”。

aptitude

周详查看已安装或可用的软件包。和apt-get类似,aptitude能够通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。
由于aptitude比apt-get了解更多信息,能够说他更适合用来进行安装和卸载。

apt-cache showpkg pkgs

显示软件包信息。
apt-cache dumpavail打印可用软件包列表。

apt-cache show pkgs

显示软件包记录,类似于dpkg –print-avail。

apt-cache pkgnames

打印软件包列表中任何软件包的名称。

dpkg -S file

aptitude

编辑本段概述

aptitude
aptitude 是 Debian GNU/Linux 系统中, 非常神奇的的软件包管理器,基于大名鼎鼎的 APT 机制, 整合了 dselect 和 apt-get的所有功能, 并提供的更多特性,特别是在依赖关系处理上。
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
以下是一些常用 aptitude命令,仅供参考。
命令
作用
aptitude update
更新可用的包列表
aptitude upgrade
升级可用的包
aptitude dist-upgrade
将系统升级到新的发行版
aptitude install pkgname
安装包
aptitude remove pkgname
删除包
aptitude purge pkgname
删除包及其配置文件
aptitude search string
搜索包
aptitude show pkgname
显示包的详细信息
aptitude clean
删除下载的包文件
aptitude autoclean
仅删除过期的包文件

编辑本段定义与介绍

要使用 aptitude, 只要打开您喜爱的终端, 键入如下命令即可。
# aptitude
aptitude 的主视图组织的非常有条理,而且界面布局清爽.上部窗口列出的是软件包根据类别和它们在本地系统的状态排序。
aptitude是以树状结构组织的,相关节点以细线相连.可以使用方向键, [PageUp] 和 [PageDown] 进行定位.[Return] 或[Enter] 用于展开或收起某个节点.aptitude 的开视图分为四列: 软件包状态和请求动作, 软件包名称, 当前安装版本(或de><de>nonede>>de>), 最新版本.
aptitude软件包列表中的软件包状态:
v
虚拟
B
损坏
u
解包
C
预配置
H
预安装
c
卸载未清除
p
清除软件包
i
已经安装
E
内部错误
  
在aptitude软件包列表中的请求操作:
h
保持
p
清除
d
删除(卸载)
B
损坏
i
安装
r
重装
u
升级

快速开始

对于任何程序来说, 您首先知道的就是如何退出 -- 在aptitude的主视图中键入[q](quit), 即可退出 aptitude. 任何时候您键入[?](help), 都可以唤出帮助信息.
aptitude是基于apt机制的, 因此在进一步操作前你需要正确的配置sources.list文件.并确保 软件包列表得到了及时的更新. [u](update)命令就是为此设计的, 这类似于 apt-get update 操作.
如果出现了新的软件包(也就是说, 至上次软件包列表更新时, 仍为出现的软件包), 将会在 New Packages 选项下显示. 您可以键入[f](forget that packages are new)命令, 将它们清除到可用软件包选项中去.
移动光标到您感兴趣的行, 然后键入回车, 将选项展开. 选定一个软件包后, 有关软件包的信息将会出现在屏幕底部. 如果要查看更详细的信息, 则需要键入[i](information). 键入  [q] (quit)则会退出信息显示屏幕.
对于没有安装的软件包(位于 New Packages 或 Not Installed Packages 区域), 可以选定后, 键入[+](add package), 以标示安装.
对于已经安装的软件包, 则可以进行保持, 删除, 或清除等操作. 保持[=](hold)是指保持软件包的现有版本, 而禁止对其升级. 删除 [-](remove package) 标记已安装软件包为删除状态. [_](purge package) 命令则将软件包标记为清除状态.  
一旦您标记完感兴趣的软件包, 就可以键入 [g](go )以保存修改, 使其生效.

软件包的选择

可以通过浏览,然后按下对应键进行操作:
de>[+]de>
选定要安装的软件包。
de>[-]de>
选定要删除的软件包。
de>[_]de>
选定要清除的软件包。
de>[=]de>
保持软件包的当前版本,阻止其被升级。
de>[:]de>
仅在aptitude会话期间锁定软件包。
de>[L]de>
请求重装软件包。
de>[M]de>
将软件包标记为自动安装。自动安装的软件包
 
在手动安装的包对其没有依赖需求时会自动删除。
de>[m]de>
将软件包标记为手动。
de>[R]de>
请求重新配置软件包。
de>[I]de>
请求立即安装软件包(以其依赖包)并暂时锁定其它升级和
 
安装的软件包。作用与apt-get install de><package>de>相同。
de>[F]de>
禁止安装某个版本的软件包。但是,对更高版本正常使用。
de>[B]de>
调用reportbug,申报一个软件包的错误。
de>[C]de>
下载并显示一个软件包的变更日志。
de>[g]de>
进入所有请求变更的预览窗口。如果在预览屏键入此键,
 
将执行变更操作。
de>[d]de>
查询相关软件包: suggest/recommanded/depends
de>[r]de>
查询依赖包
de>[/]de>
搜索
de>[\]de>
继续搜索
  
注: Control-u组合键可用于取消上一步的动作
这个文档属于哪个已安装软件包。

dpkg -L package

列出软件包中的任何文档。

dpkg -l

列出所有已安装的软件包

apt-file search filename

查找包含特定文档的软件包(不一定是已安装的),这些文档的文档名中含有指定的字符串。apt-file是个单独的软件包。您必须先使用apt-get install来安装他,然後运行apt-file update。假如apt-file search filename输出的内容太多,您能够尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文档名)或类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文档夹中的文档,假如您要查找的是某个特定的执行文档的话,这样做是有帮助的)

apt-get autoclean

定期运行这个命令来清除那些已卸载的软件包的.deb文档。通过这种方式,您能够释放大量的磁盘空间。假如您的需求十分迫切,能够使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文档一并删除。大多数情况下您不会再用到这些.debs文档,因此假如您为磁盘空间不足而感到焦头烂额,这个办法也许值得一试。
 

linux中随手可得的测试、调试、性能检验工具

分类: 软件开发 资料收集 Linux/Unix 145人阅读 评论(0) 收藏 举报
  原定标题是“linux自带的测试、调试、性能工具”,不过并不恰当,比如本文要提到的gdb,很多Linux发行版中都提供了它,但毕竟不是Linux的必要组成部分,只是对与大多数Linux用户随手可得罢了。合理组合使用这些工具可以满足更复杂的要求,并写成测试脚本,能为测试提供很大的方便。本文不涉及具体的脚本编写,也不涉及与网络相关的命令如netstat和tcpdump。
  为了方便阅读,用横线把内容进行分割,并且每个下划线下对这部分主要内容进行提示。
  对于1~6这几个命令,单独使用时看上去很简单,但当它们结合重定向和正则表达式从而构成更复杂的功能甚至是自动化脚本时,才能发挥其真正威力。

  cmp和diff可以用于版本控制,比较两个版本文件的不同之处,也可以用于比较程序产生的输出。
1.cmp
  逐字节比较两个文件,输出。无选项则输出第一个不同的地方。
  常用选项:
  -l 输出所有不同的字节,并显示字节数(十进制)和每个不同的不同字节(八进制)。例如,如果第3个字节file1.txt中是八进制151,flie2.txt中是12,则显示:

    3 151  12

2.diff

  逐行比较两个文件;如果指定的是目录,则比较目录下的同名文件。

  输出为:文件1中的行数+格式提示+文件2中的行数,其中格式提示为a、c、d,对应add、change、delete。

  diff的退出值有特定含义, 0 表示没有不同,1 表示找到不同处,2 表示出错。

  常用选项:

    -y --side-by-side 以两列输出。这时用 |标注二者不同的行,<标注后者比前者少一行,>标注前者比后者少一行。此时还可以加上下面的选项:       -W NUM --width=NUM 输出最多打印 NUM (默认 130) 列。       --left-column 仅输出共有行的左侧列。

    -c  -C NUM  --context[=NUM]  输出 NUM (默认 3) 行复制的上下文。两个文件的全文都会显示。

    -u  -U NUM  --unified[=NUM]  输出 NUM (默认 3) 行合并的上下文。两个文件相同的部分只显示一次。

    -ruN 生成patch文件,格式为diff -ruN file1 file2 >patch.dat,这时使用patch file1 patch.dat就能把file1的内容更新到与file2一致了。


  sort、sum、wc同样可以对文件和输出按需要进行处理。对于能够把stdin重定向到文件中的Linux来说,对输出的处理和对文件的处理是一样的。

3.sort

  按字母序输出各行。这个命令可以同时处理多个文件。

  常用选项:

    -u 去除重复行

    -r  降序输出

    -n 按数字序排序,(这样2才不会排到10后面)

    -t    按某个分隔符分隔,这时可以用-k指定列数

4.sum

  计算文件校验和以及占用的块(block)数。校验和算法和block的大小可以根据选项设定。

5.wc

  输出文件的行数、字(word)数、字节数。如果多于一个文件还将输出总行数。

  常用选项:

    -c   输出字节数

    -m  输出字符数

    -l  输出行数

    -w  输出字(word)数


6.grep

  从文本中搜索符合正则表达式的内容并显示。这里就不提正则表达式是多么的强大了,其规则可以单独写成一篇博文,并且很多人已经这么做过了。下面是一些用法启发,看完之后会让人觉得,原来这个“搜索”的需求的具体化如此多样。例子出于《程序设计实践》:

  哪些文件里用到了类Regexp?  %grep Regexp *.java

  这个类的实现在哪个文件?     %grep 'class.*Regexp' *.java

  文件中有多少空行?        %grep '.' *.c++ |wc


  运行时间的统计和测定:time和gprof

7.time
  用法是$time 可执行文件/命令
  显示程序运行的总时间、用户时间和系统时间。
  对于一个执行时间很短的程序,运行时间可能显示为0。
  因为并不是由程序执行本身收集的,如果time命令被停止或被换出内存,显示的时间可能大于真实的时间。
8.gprof
  统计程序运行时各个函数的运行时间和被调用的次数。这对代码调优很有帮助,通过这个统计,可以找到占用时间比率大、调用次数多的函数,对齐进行优化,这样可以提升程序的性能。而对于较少执行而且占用时间不多的函数,即使存在优化的可能性,也不必费心考虑优化方案,因为对它的优化对性能提升不大。   如果需要gprof,在gcc时需要增加-pg选项,这时会生成一个gmon.out文件。

  代码查错:gcc -Wall选项、lint 9.gcc -Wall
  之所以把这个gcc选项也列上,主要是其作用容易被人忽略。Writing Solid Code上援引Peter Lynch——据说是80年代最好的合股投资公司管理者——的话:投资者与赌徒之间的区别在于投资者利用每一次机会,无论它是多么小,去争取利益;而赌徒则只靠运气。作者建议把这句话应用于编程,选择编译程序的所有可选警告选项,并视之为无风险高偿还的程序投资。不要问“应该使用这一警告设施吗?”而是问:“为什么不使用这一警告设施呢?”把所有警告选项都打开,除非有极好的理由才不这么做。
10.lint
  最初lint用于检查C语言中不可移植的代码,而现在已经不只是一个可移植性检查程序,还可以检查出代码中那些虽然可移植并且完全合乎语法但很有可能是错误的特性。
  lint有很多版本,Linux下可以使用splint,通过apt-get安装。

  较综合的调试:gdb
11.gdb
  gdb是一个较为综合的调试工具,提供了诸如断点、变量监测和设置、信号、查看函数堆栈、单步执行等功能,这里不做详细介绍,相关的博文很多,可以进行参考,我以前也做了个记录:gdb调试命令

  其他:strace
12.strace
  strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。这条命令我之前没有用过,下面贴一个地址供需要的人进一步研究:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html

抱歉!评论已关闭.