安装 nodejs
安装 Appium
Appium是Android平台上一个测试框架。
本文简单地介绍如何在
Linux机器上安装并运行该框架。
应用环境:
Ubuntu 12.04 LTS
HTC One X (endeavoru, S720e)
Android SDK
请参考SDK环境,这里就不多说了。
Appium
安装 nodejs
apt-get install nodejs
# 或者通过nodejs源码编译,这样可以使用最新的代码
cd ~/downloads
wget http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz
tar -zxf node-v0.10.25.tar.gz
cd ode-v0.10.25
./configure --prefix=/usr/local/node
make && make install
# edit ~/.bashrc and add node to your PATH env
安装 Appium
npm install -g appium # install appium as a global app
配置手机
手机需要是已经root过的!
su
chmod 777 /data/local
另外,也要确保你手机上安装了最新的chrome浏览器!
Note:
这步是必需的,否则后面会发生无法启动浏览器的异常。
下载&运行测试项目
# 下载项目
git clone git@github.com:ytfei/appium_chrome_demo.git
cd appium_chrome_demo
npm install # 安装依赖包
# 启动appium
appium -g appium.log &
# 开始测试
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
感谢我老婆,大周六自己在家带孩子,让我参加了一整天的敏捷Scrum Master 培训。我想如果这个培训是
工作日在公司内部,大家是否还有如此的积极热情呢?今天只达到预期人数的一半,参与程度却非常高,结束之后大家都围着杜伟忠教练不断问问题。我切实的感觉到这些人真的是公司内愿意
学习新知识,对
敏捷,对改进有极大热情的人。我想无论是培训还是其他交流活动,想甄别出南郭先生还是真正热情的粉丝,选择周末举办是个不错的办法。
抛开现实,在敏捷实践的活动中,我们可以组成自组织的小团队,频繁沟通、持续改进。但是真正讨论到敏捷落地,有些人一声叹息说“理想与现实还是有差距的”,也有些人觉得“有心问鼎,无力回天”,还有一大部分人抱着乐观而又被动的心态想着“总有人来帮助我们做出改变的”…
世界的大环境都是一直在改变的,又何况我们所处在的小环境,面对变革,要么被淘汰,要么被改变。被动改变是痛苦的,想主动改变却又觉得无从下手干着急是更痛苦的。反正都要痛那么一下子,就好比打针,我们预期到针要扎在哪个屁股上,会事先做好心理准备的。所以我想可以先来分析下敏捷转型会扎到我们个人和组织的哪些痛处?
持续学习之痛
组织中一部分人已经习惯了现有的工作方式,虽然有问题,但是凭着个人的经验也能够处理的游刃有余。
作为开发,每天要应付很多的各种来源的任务,有的是产品经理和开发经理定的,有的是总监拍的。已经习惯了领导驱动的工作方式,也已经逐渐摸索出了一套“上有政策,下有对策”的应对措施。我已经习惯于通过google来解决问题,偏偏现在只能用
百度,就忍了。你还要让我学习“重构”、学习“
测试驱动开发”,学习“实例化需求”,学习“持续集成”?我只想说“我是写代码的,干嘛要管你们那么多事情”。
作为测试,隔三差五的上线个小需求啥的,等待部署环境一个小时,等待数据同步三个小时,抓紧在午夜十二点之前完成十来个用例的线上验证,好回家睡觉。我上班不能学习吧,我要点页面,我要找开发,找产品,下班我还要加班啊,什么时间来学习呢?
我已经好久不碰代码了,
自动化测试我怎么学的会呢?测试最牛逼的还是手动测试,专家都这么说了。
作为产品,我都忙得找不着北了,我不主动去找开发人家也不搭理我,我天天要开会、要沟通,要写PRD,还要天天被测试缠着确认各种需求问题。我一直希望深入的掌握业务,可是我TMD也就是个公司业务方的代言人,就是你们天天说的“二道贩子需求”。别给我提什么Product owner是决定一个产品成败的关键所在,我只想着老老实实把领导关注的业务都给实现喽,敏捷啊,是你们研发自己的事情。
组织架构之痛
组织结构是职能部门横向划分的,产品经理属于产品部门、开发属于开发部门、测试属于测试部门、项目经理属于
项目管理部。每个部门的团队都要实现各自不同的价值,这样难免会出现“各扫门前雪”的情况。如果要敏捷,倡导跨职能的团队,原来独立职能团队积累的一些经验需要打破重来,原来的经理们需要重新找到自己的位置。这都是不容易的。
首先从测试部门说起,目前测试团队的价值体现在什么地方?常常团队中认为发现足够多的
Bug,编写足够多的
测试用例,及时得反馈问题,这样就够了。可是真是这样吗?每每开发完成了提交测试,后期又出现项目周期延误,大家或多或少的心里嘀咕“测试时间这么拖这么长,能力不行吗?”有时线上出了问题,开发熬夜改bug到凌晨3点,他也会抱怨一句“这个问题怎么测试没发现?”。测试肯定觉得很冤,我们Bug和用例的数据都在那呢,最后处理问题的结果可能是开发测试各打五十大板了事。如果要敏捷转型,追求全能型工程师,测试部门独立存在的必要性就很小了,敏捷团队中的每个人无论是开发、产品、还是测试都会参与到测试中去,打破了对测试工程师自身的局限以及这个title的局限。面对组织架构的重构,测试部门及团队成员必须浴火重生,在提升业务能力和技术能力的同时才能体现出自身的价值。
目前的开发部门,负责前台页面的不管后台Server的问题,负责单独模块开发的不负责公共部分问题的修改,开发主管一般作为Product owner来掌控项目。这样看起来,专业化、精细化的分工是能够把职责划分得更清晰,可是确常常会出现接力失误,导致接力棒掉在地上的情况。有些划分不清的区域,谁也不愿意也没有责任去主动承担。开发主管以小组成员利益的角度出发,在平衡客户需求和团队诉求时是非常困难的。可是,如果转型,必然需要调整组织结构,要重新打破旧有的平衡,已经到嘴边的“蛋糕”也需要重新分配。
产品上面已经吐槽了,这里就说说项目管理部门。尴尬的项目经理没有考核项目成员的权利,却要承担着项目质量控制、进度控制、风险控制的责任,需要协调产品、研发、测试各个部门。可以不断的反馈问题,推动起来却重重阻碍。出现问题汇报领导,项目组成员觉得你爱打小报告,若是不汇报,出现问题,又要承担没有及时反馈的责任。因此只能说这个战场比拼的是情商和个人魅力,这样才能够顺利周旋于多个角色之间。那么,转型敏捷后,项目经理要面临什么样的角色转换呢?Scrum master 还是 product owner,还是重新开始写代码,成为一名团队成员呢?
渺小的个人VS强大的影响力
渴望改进的人,绝不是消极的,抱怨是无解的。敏捷的思想是要相信团队,无论是自己所在的小团队,还是公司这个大团体。还要相信个体的力量,通过不断学习提高自己的能力,发挥“日拱一卒”的精神,抱着一颗同理心,帮助他人,与团队内外的成员共同进步,去建立自己的影响力。做好心理和技能的准备,不断的实践尝试,一步一步实现改进的愿望。
说起来是这个道理,可是有人会说了,我作为一个普通员工,我甚至只是一个测试工程师,处于项目流程的下游,我感觉自己什么也做不了。即使领导支持敏捷了,我们作为测试,不会直接的交付产品,我们也无法单独敏捷啊。或者作为一名开发工程师,或者产品经理,个人都是没法一下子去推动敏捷改进的。还有人说,那就等吧,你不用操那么多心,你所想的迟早有一天公司都会帮你实现的。。。
不只是我们自己相信,敏捷思想是经过验证的能够提高交付价值,提高团队效率的有效工具。因此,我们要相信好的东西,大家是没有理由不喜欢的。就好比美味的螃蟹,大家不去吃,是因为不知道它的美味,不同的人看到的是不用的角度,有的人只看到了张牙舞爪的钳子,有的人只看到了硬硬的壳子,在没有品尝到美味的蟹肉和蟹黄之前,大家都不可能欣然接受,更何谈去主动参与,积极推动呢?
杜伟忠教练也给我们分享过一个实例,原来他还没做敏捷教练,是热心敏捷的爱好者。他的办法就是鼓励身边的同事或领导和他一起去参加敏捷的社区或者交流分享活动,让大家逐渐都感受到敏捷的魅力,大家都觉得好了,自然推动起来就没什么阻力了。这只是一种影响他人的方法。我们也可以从自身做起,不断学习,去掌握敏捷的精髓,提炼出真正提高生产力对团队有益的实践,先小范围应用到实际工作中,身边的人自然会看到你做的一切,自然会感受到敏捷的力量。
这是
互联网的时代,按照互联网思维,每个人都是一个节点,通过建立连接可以发挥无穷的影响力,方法就是不断的 学习、实践、沟通、分享 ,循环往复…
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
Loadrunner12推出Community版本,支持50个免费用户
LoadRunner仿照6年前就已经出现的SOASTA、Neotys、Blazemeter等竞争对手,推出云
性能测试平台,有兴趣的朋友可以看看《Thoughts about LoadRunner 12 Release》这篇
文章。
新特性
1、Cloud-based load generators
2、Licensing - 50 vUsers free
3、VUGEN improvements
The ability to review replay statistics for tests after each run.
Including details on total connections, disconnections and bytes downloaded.
The ability to edit common file types in the editor.
Support for recording in the Internet Explorer 11, Chrome v30 and Firefox v23 browsers.
The ability to create scripts from Wireshark or Fiddler files.
The ability to record HTML5 or SPDY protocols.
4、TruClient improvements
TruClient script converter. This basically replays your TruClient scripts and records the HTTP/HTML traffic allowing you to create these script typers from TruClient recordings. This is similar to recording GUI scripts and then converting to other script types.
The addition of support for Rendezvous points, IP spoofing, VTS2 and Shunra network virtualisation in TruClient scripts.
5、
Linux Load Generator improvements
Building on the increased support for Linux Load Generators in 11.5x, LDAP, DNS, FTP, IMAP, ODBC, POP3, SMTP and
Windows Sockets scripts can now be replayed through UNIX load generators.
6、CI/CD support
Better integration with Jenkins etc.
7、Platform support
Support for installation on Windows Server 2012.
(LoadRunner 11.x and PC 11.x only supported up to W2K8 which was a barrier to enterprise adoption).
LoadRunner components can now run in a "non-admin" user account with UAC and DEP enabled.
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
一、 网站程序中采用DIV+CSS这种模式,不用Table
目前DIV+CSS是主流的编程语言,这与其体积小加载快的优点是密不可分的。主流的网站和CMS采用的也都是这种模式。因此建议大家也采用这种模式来编程,而不要采用原始的Table结构。Table结构不但管理不方便,网页体积也会变大,降低网站的加载速度。
二、 采用Gzip技术对网页进行压缩
采用Gzip技术对网页进行压缩是减少网页体积的一个很好的方式.一般情况下这是需要你的网站空间支持的,像我用的A5的合租主机,压缩率可以达到80%。网页体积小了,自然加载速度就快了。
三、 减少CSS文件数量和体积
在采用DIV+CSS过程中,CSS文件是非常重要的。如果在编写过程中有多个CSS文件,建议将多个CSS文件进行合并,这样可以加快网站加载速度。另外,可以采用专业的网页减肥软件对CSS文件进行减肥,以减少CSS文件的体积。
四、使用CDN加速。
近一年CDN已经在我们个人站长中听的较多,也有很多朋友在使用。CDN的全称是Content Delivery Network,解释为内容分发网络。原理思路是尽可能避开
互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。也就是网站加速器,这个需要付费使用的,免费的不是太稳定。
五、优化代码,减少臃肿结构。
如果我们使用较为流行的CMS这方便应该不会有臃肿的代码结构存在,但需要注意的是我们在制作或者选择网站模 板的时候也会存在不合理的结构。我们需要在写模板或者程序的时候使用较为简洁的程序框架,简洁有利于用户体验,也更利于搜索引擎蜘蛛的爬行和抓取。
六、减少图片大小和数量。
我们尽量在上传网站图片的时候减少图片的大小和尺寸,可以在上传图片之前对图片进行压缩处理,图片适当尺码即可,不要过大。图片仅仅是网站的点缀,而不需要都是图文。同时,我们也尽量避免使用大量的视频或者音频内容。
七、减少JavaScript脚本文件,尽量存放在一个文件中。
尽量外部调用JS代码,不要放在网页中,更不要远程调用外部的JS代码。例 如
Google建议您加载在HEAD标签的分析。您也可以尝试结合的JavaScript和压缩他们更快地加载。有些时候我们在头部的CSS,JS代码太 多,导致中间内容部分加载太慢。所以尽量减少头部的代码。
八、运用静态的HTML页面
众所周知,ASP、PHP、JSP等顺序完成了网页信息的静态交互,运转起来确实十分方便,由于它们的数据交互性好,能很方便地存取、更改
数据库的内容,但是这类顺序也有本人的缺陷,那就是它必需由效劳器先生成HTML页面,然后在“传送”给用户,多了一个步骤,必定会影响到网站的拜访速度,所以笔者建议,在新站开端的时分,在对本人网站的重要调查期内还是采用静态的HTML页面比拟保险。
九、 将ASP、ASPX、PHP等文件的访问改为.js引用
这在ASP、ASPX、PHP等程序设计时应该注意的,如果要在静态的HTML页面里嵌入动态的数据,而这些动态的数据是由ASP、PHP等程序来提供的话,会使用以下的语句引用:
<script src=”http://image.ccidnet.com/ad_files/network_index.asp?orders=1″></script>
这样的话,每次有一个人访问你的网站,服务器就要执行并处理一次network_index.asp文件,从数据库抽取相应的数据,再输出给网页显示,如果有几万个人同时访问,就要执行几万次,后果就可想而知。建议在这些程序中将数据动态生成到一个network_index.js文件中去,然后在首页通过
<script src=”http://www.179job.com/ad_files/home_daohang/network_index.js”></script>
这样的代码来引用该network_index.js文件。这样,数据显示的任务就交给客户端的浏览器去做,不会耗费服务器的资源,显示速度自然就很快;前者所花的时间几乎是后者的几倍!
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
正是因为业务需求推动应用软件的创建,所以应用程序的设计必须万无一失且通过质量保证认证。质量保证的一个重要方面是:设计出能确保所有设计场景已在
测试中被抓取的
测试用例。测试用例是一组条件或变量,在其中,测试员将决定被测系统是否满足设计的要求和功能。开发测试用例的过程也有助于发现应用程序的要求或设计中的问题。一个测试用例与一些元素指示(如测试集ID ,测试用例ID,测试总结和测试描述)有关。
测试用例设计有两个主要任务:
·测试设计是所有逻辑测试用例的注意要求的草案。如果有效地设计,这就是一个能在测试执行时节省相当大精力及成本的关键部分。
·规格包含被转化为将要进行的物理测试指令的完整描述的草稿。
我们使用一个基于元数据的方法来设计测试用例。这种方法对于将要跨多个应用程序进行统一测试时以可重复的方式设计测试用例来说是很有用的。示例场景是涉及数据迁移或企业数据屏蔽的项目。基于元数据的测试用例设计和通用测试用例设计的主要区别是:前者没有在从需求去推导测试用例上花时间,因为通过元数据直接使用数据或前期数据的数据或属性是有可能的。
图1.使用测试用例生成工具设计测试用例
用基于元数据的方法,我们可以着手处理库存要求;反过来,着手处理库存要求也可以获取元数据存储库中的数据属性。基于库存,就能准备高层次的场景,然后支持测试用例的开发。为了加快测试用例的准备过程,我们设计了可以用任意基本脚本语言(如VB脚本,UNIX或Perl)实现的方法,以可重复的方式高效地生成测试用例。
测试用例生成工具( TCGT )是一个基于在矩阵上的信息的基础上生成测试用例的高度自动化工具。它生成的测试用例可以满足验收,确认,应用核实的目的。基于元数据的测试用例设计可以用于以下两种场景,在这两种场景中要求了基于工厂的测试用例设计和生成。
场景1:数据迁移
数据迁移项目需要大量的
数据库测试,以确保没有数据泄漏,且迁移后数据的完整性和质量得以保留。迁移过程是由一组作为映射规则和转换功能的规格决定的。例如,如果我们正在测试一个系统,把数据从
SQL Server 2005迁移到SQL Server 2008中,我们就需要执行以下操作:
·数据迁移的需求分析
·规范化要求
·元数据验证
·数据验证
场景2:数据屏蔽
基于元数据的测试用例的设计也可以在企业数据屏蔽中实现。数据屏蔽测试需要比较数据正确性和完整性的源头数据和目标数据。没有屏蔽或屏蔽后复制的表格应该测试其数据变化,屏蔽算法和业务规则。在大多数情况下,数据屏蔽场景需要可重复准备和执行的测试用例,这样测试用例设计中就可以使用元数据方法了。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
一、问题:如何将mock的类自动注入到待测类,特别是在没有setter方法的情况下。
解答:
前提:待测的service类及其依赖的其他类都是处在被spring管理中的。
做法:在
测试类中,只要将待测的类标注为@InjectMocks,将其依赖的其他类标注为 @Mock,
就可以使用MockitoAnnotations.initMocks(this);这句话自动将依赖的类注入待测类,如果依赖类在spring的管理下有自己的name,那么甚至在待测类中都不需要写setter方法。
例:
1、待测类
@Component("abcService") public class AbcService { @Resource(name="aaaDao") private AaaDao aaaDao; @Resource(name="bbbDao") private BbbDao bbbDao; ......//注:此处省略的代码中并不包含aaaDao和bbbDao的setter方法。 } |
2、测试类
public class AbcServiceTest{ @InjectMocks AbcService abcService; @Mock AaaDao aaaDao; @Mock BbbDao bbbDao; @Before public void setup(){ MockitoAnnotations.initMocks(this);//这句话执行以后,aaaDao和bbbDao自动注入到abcService中。 //在这之后,你就可以放心大胆地使用when().then()等进行更详细的设置。 } } |
二、问题:如何对连续的调用进行不同的返回
对连续的调用进行不同的返回 (iterator-style stubbing)
还记得在实例2中说道当我们连续两次为同一个方法使用stub的时候,他只会使用最新的一次。但是在某一个方法中我们确实有很多的调用怎么办呢?mockito当然想到这一点了:
when(mock.someMethod("some arg")) .thenThrow(new RuntimeException()) .thenReturn("foo"); //First call: throws runtime exception: mock.someMethod("some arg"); //Second call: prints "foo" System.out.println(mock.someMethod("some arg")); //Any consecutive call: prints "foo" as well (last stubbing wins). System.out.println(mock.someMethod("some arg")); |
当然我们也可以将第一句写的更简单一些:
when(mock.someMethod("some arg"))
.thenReturn("one", "two", "three");
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
CentOS:
开启远程连接服务:service sshd start
添加到系统启动项:chkconfig sshd on
客户端工具:windows下连接工具putty
=============================================
Ubuntu:
安装命令:$ sudo apt-get install openssh-server
查看openssh-server是否启动
$ ps -e | grep ssh
进程ssh-agent是客户端,sshd为服务器端,如果结果中有sshd的进程说明openssh-server已经启动,如果没有则需运行命令启动。
启动、停止和重启openssh-server的命令如下
/etc/init.d/ssh start
/etc/init.d/ssh stop
/etc/init.d/ssh restart
配置openssh-server
openssh-server配置文件位于/etc/ssh/sshd_config,在这里可以配置SSH的服务端口等,例如:默认端口是22,可以自定义为其他端口号,如222,然后需要重启SSH服务。
Ubuntu中配置openssh-server开机自动启动
打开/etc/rc.local文件,在exit 0语句前加入:
/etc/init.d/ssh start
关于客户端连接
客户端可以用putty、SecureCRT、SSH Secure Shell Client等SSH 客户端软件,输入您服务器的IP地址,并且输入登录的用户和密码就可以登录了。我常选择的客户端软件是putty。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
摘要: 前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项。文中涉及的代码运行环境如下: 本文假定读者已具备线程同步的基础知识。 一 顺序表循环队列 1.1 顺序循环队列定义 队列是一种运算受限的先进先出线性表,仅允许在队尾插入(入队),在队首删除(出队)。新元素入队后成为新的队尾元素,元素出队后其后继元素就成为队首元素。 队列的顺...
阅读全文
WINDOWS远程连接LINUX配置(LINUX VNC
Server配置):
1.查看本机是否有安装vnc(centOS5默认有安装vnc)
rpm -q vnc vnc-server
如果显示结果为:
package vnc is not installed
vnc-server-4.1.2-14.e15_3.1
那恭喜你,机器上已经安装了vnc,如果没有,就得自己安装了,这里不说怎么安装了,很简单,在centOS的软件库中搜索,点击安装
2.把远程桌面的用户加入到配置文件中
vim /etc/sysconfig/vncservers
使用vim编辑器打开配置文件,在文件中添加下面两行命令
VNCSERVERS="1:root" --指定远程用户
VNCSERVERARGS[1]="-geometry 1024x768" --指定远程桌面分辨率
3.给你刚刚设置的远程桌面用户 root 设置密码
vncpasswd
4.开启VNC端口
vim /etc/sysconfig/iptables
使用vim编辑器打开配置文件,在文件中添加下面一行命令
-A RH-Firewall-l-INPUT -p tcp -m tcp --dport 5900:5903 -j ACCEPT
5.重启防火墙
service iptables restart
6.修改远程桌面显示配置文件(不修改此文件你看到的远程桌面很简单,相当于命令行操作,为了远程操作如同本地操作一样,务必参考以下方式进行修改)
cd ~/.vnc/
vim xstartup
使用vim编辑器打开配置文件,并进行下列修改
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & --将它注释,加#代表注释
#twm & --将它注释
gnome-session & --添加它
看了这段代码,大家应该明白是怎么回事了
7.启动vnc服务
service vncserver start
8.远程连接
打开vnc客户端,server框中输入ip:1 (1代表上面配置的远程用户代号,配置文件中可以配置多个远程用户),这时你便可以轻松的通过友好的远程桌面来控制centOS了。
9.开机自动启动vnc
vim /etc/rc.d/rc.local
使用vim编辑器打开配置文件,并进行下列修改
/etc/init.d/vncserver start --新增行
WINDOWS远程连接:
主机ip+port
http://www.cnblogs.com/zxlovenet/p/4042959.html
LINUX下远程桌面工具(可远程WINDOWS):
在Linux上配置访问远程桌面的软件,这里我们需要安装rdesktop和tsclient,其中rdesktop是基于命令行的工具,tsclient只是一个图形化的界面,依赖于rdesktop。
登入gnome后打开终端
$yum install rdesktop
$yum install tsclient
如下图的:Terminal Server Client
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
浮现在脑海的很多 Linux命令,其中一些不为人知,另一些则很常见,如下: xargs or parallel: 并行运行一些程序,命令有很多的选项
m4: 简单的宏处理命令
screen: 功能强大的终端复用和会话持久工具,详见http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
yes: 重复输出字符串 详见 http://codingstandards.iteye.com/blog/826940
cal: 非常漂亮的日历
env: 运行一个命令,在脚本中非常有用
look: 查找以字符串开头英文单词
cut and paste and join: 数据操作命令
fmt: 格式化一个文本段
pr: 以页/列为单位格式化一串文本或一个较大文件,详见 http://hi.baidu.com/mchina_tang/item/1ce11d5d317dfc05aaf6d70d
fold: 使文本换行
column: 格式化文本成列或表格
expand and unexpand: 在制表符和空格之间转换
nl: 添加行号
seq: 打印行号
bc: 计算器
factor: 输出整数的因数,factor输出的为整数的质因数
nc: 网络调试和数据传输
file: 判断一个文件的类型
stat: 查看文件状态
tac: 从最后一行输出文件内容,和cat输出是相反的
shuf: 对一个文件按行随机选择数据
comm: 按行比较一个有序文件
hd and bvi: 输出或编辑二进制文件
strings: 查看二进制文件中的内容
tr: 字符翻译或操作字符
iconv or uconv: 转换编码的字符串
split and csplit: 划分文件
7z: 高压缩率压缩文件
ldd: 查看动态库信息
nm: 查看目标文件中的符号表
strace: 调试系统调用
mtr: 网络调试时能够更好的进行路由跟踪工具
wireshark and tshark: 数据包捕获和网络调试
host and dig: 查找DNS
lsof: 查看进程文件描述符和socket信息
dstat: 很有用的系统数据统计工具
iostat: CPU和磁盘使用统计
htop: top的改进版本
last: 登录历史
w: 当前登录用户
id: 查看用户/组 表示信息
sar: 查看历史系统统计数据工具
iftop or nethogs: 查看socket或者进程的网络利用率
ss: 查看统计信息
dmesg: 启动或者系统错误信息
(Linux) hdparm: 显示或设定磁盘参数
(Linux) lsb_release: 查看linux系统发行版本信息
(Linux) lshw: 查看硬件信息
fortune, ddate, and sl: 这取决于你是否觉得蒸汽机或者比比语录有用。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters