Linux常用命令

Linux常用命令,第1张

列出当前目录的文件

常用参数: 

-a: 显示当前目录的所有文件,包含隐藏文件; 

-l: 显示文件详情; 

-Z: 显示文件的 SE Linux context。 

示例:ls -laZ [if !vml] [endif] 以 acct 为例: drwxr-xr-x:其中 d 代表该文件为目录,若为 l 则为软链接,软连接后又箭头代表其实际指向的文件,如etc ->/system/etc 则访问 etc 实际等同访问/system/etc,留空则代表该文件为一个文件;rwxr-xr-x 代表其权限为 755,具体算法为将上述字段每 3 个分为 1 组得 rwx,r-x,r-x,凡是有字母标记的皆计数 1,反之为 0,得二进制 111,101,101,转为 10 进制数字即得7, 5,5 ,即为该文件权限; root root :依次代表该文件的所有者(owner)为 root,用户组(group)为 root,上述属性可通过 chown 命令修改,日常替换文件需与原文件该属性维持一致; unlabeled:代表 SE Linux context。

前往指定目录

更改文件所有者和用户组   示例:chown root:root temfile 将 tmpfile文件 的所有者和用户组从 meidia:media 更改为 root:root

将文件内容显示出来。

注意不要随便去 cat 一个很大的文件或与 log 驱动节点无关的文件,否则将造成串口输出乱码或死机!!!示例:cat /proc/kmsg 将打印出所有 kernel log。

用于抓取 android logcat 打印。

常用参数:

-v : 设置打印格式,可用选项为 brief process tag thread raw time threadtime long,我们比较常用 logcat -v time,此时抓的 log 将在每一行开头添加时间信息;

-s : 设置过滤器,过滤器的选择取决于软件中打印 log 时使用的 TAG ,如

ActivityManagerService.java 中的打印使用的 TAG = ActivityManager,则抓相关打印方法为 logcat -s ActivityManager;

-c : 清除 log 缓存,常用于清除之前的打印缓存,如复现某个必现问题,则可先执行 logcat -c 再抓 logcat 重现必现手法以排除无关 log 冗余信息影响问题定位; pm

包管理命令,用于管理安卓 app 应用。

常用参数:

-l : 显示所有安装包应用,等同于 pm list packages

以 package:/system/priv-app/Launcher2.apk=com.android.launcher 为例:

Apk Launcher2 路径位于/system/priv-app/Launcher2.apk,其包名为 com.android.launcher

path : 根据报名返回所在 apk 路径

install : 安装 apk

-r :安装一个已经存在的 apk 并保留其数据;

-d : 允许降级安装

如:pm install -r xxx.apk

uninstall : 卸载 apk,命令仅支持卸载 data/app,后接包名;

如:pm uninstall com.sys.migusmartlink.ott.tv //卸载包名为 com.sys.migusmartlink.ott.tv 的 apk

随机测试指令,会自动模拟一些用户 *** 作对 APP 进行压力测试。

常用参数:

-p :指定启动的 APK,我们比较常用的是 monkey -p com.xxx.yyy 1 来启动一个 apk 的随机页面。

用于启动和管理 activity 和 service

常用参数:

start : 后接 intent 启动一个页面;

startservice : 后接 intent 启动一个 service; stopservice :后接 intent 停止一个 service; broadcast :后接一个 intent 发送一个广播; kill :后接一个 app 包名,杀掉该 app 所有进程;在 shell 环境下用如下参数表述一个 intent:

[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]

[-c <CATEGORY>[-c <CATEGORY>] ...]

[-e|--es <EXTRA_KEY><EXTRA_STRING_VALUE>...]

[--esn <EXTRA_KEY>...]

[--ez <EXTRA_KEY><EXTRA_BOOLEAN_VALUE>...]

[--ei <EXTRA_KEY><EXTRA_INT_VALUE>...]

[--el <EXTRA_KEY><EXTRA_LONG_VALUE>...]

[--ef <EXTRA_KEY><EXTRA_FLOAT_VALUE>...]

[--eu <EXTRA_KEY><EXTRA_URI_VALUE>...]

[--ecn <EXTRA_KEY><EXTRA_COMPONENT_NAME_VALUE>]

[--eia <EXTRA_KEY><EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]

[--ela <EXTRA_KEY><EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]

[--efa <EXTRA_KEY><EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]

[-n <COMPONENT>] [-f <FLAGS>]

示例:

如我们在 logcat 抓到如下打印启动了播放器:

START u0 {act=android.intent.action.VIEW dat=file:///storage/external_storage/sda1/[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 typ=video/* flg=0x13000000 cmp=com.meson.videoplayer/.VideoPlayer} from pid 15204

则我们可以使用如下 am 指令来启动它:

am start -a android.intent.action.VIEW -d file:///storage/external_storage/sda1/[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 -t video/* -f 0x13000000 -n com.meson.videoplayer/.VideoPlayer am start -n com.android.settings/.Settings //启动原生安卓设置主页

am broadcast -a com.chinamobile.action.KEY_PRESS_DOWN --ei keyCode 11 &&am broadcast -a com.chinamobile.action.IR_TEST --es irphycode "0x008EDD22" //发送广播

查找命令,查找文件中是否包含指定字符串并输出该行示例:

grep -rns "repeat" /system/etc/remote1.conf //找出/system/etc/remote1.conf 所有包含 repeat 的行并展示行号

参数说明:

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。

-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。

-f:覆盖已经存在的目标文件而不给出提示。

-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。

-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

-l:不复制文件,只是生成链接文件。

命令示例:cp -a a  parentPath/sonPath/ a对应当前文件夹下目录或文件名  可替换为绝对路径 

移动指令,等效于 windows 的移动和重命名。

示例:

mv /data/tmp1 /data/local/tmp2 //将 data/tmp1移动到/data/local/ 并重命名为 tmp2

删除指令,用于删除文件和文件夹,示例:

rm -rf tmp // 删除 tmp,建议加上-rf参数,其会删除 tmp 所有的目录和文件。

创建目录。常用参数:

-p :若 mkdir -p 后接路径包含不存在路径则一并创建。

同步命令,常用于 cp 替换文件或指令结束后同步状态,有益无害。

重定向,即将一个命令的输出指向另外路径的文件,使用覆盖模式,即重定向到的文件若存在将覆盖里面的内容。

示例:

logcat >/data/xxx.log//将 logcat输出到/data/xxx.log

cat /proc/kmsg >/data/kmsg.log//将 kmsg 打印输出重定向到/data/kmsg.log

重定向,即将一个命令的输出指向另外路径的文件,使用拼接模式,即重定向到的文件若存在则将输出拼接到原文件的后面。

示例:

logcat >>/data/xxx.log//例如我们做 netreboot的时候需要每一次开关机的 log,则会用拼接模式记录log。

将指令放至后台静默执行。

依次执行指令,若有指令执行失败,则后续指令不会执行。

示例:

logcat -c &&logcat //先清除 logcat 缓存再抓取 log

移动动测测试试基基础础

adb常常用用命命令令总总结结

1. adb / adb -help 使用帮助

2. adb devices 查看连接到电脑的设备

3. adb install example.apk 安装程序

4. adb -s emulator-5554 install example.apk 安装程序到指定的设备上(模拟器)

5. adb pull <remote><local>将设备上文件保存到电脑上

6. adb push <local><remote>将本地的文件上传到设备上

7. adb start-server 重启adb服务

8. adb kill-server 杀掉adb服务

9. adb shell 进入命令行交互模式,进入之后可以像在linux输入shell命令一样来 *** 作手机设备(android本来就是基于linux的)

10. adb logcat <信息显示优先级参数>显示日志信息 优先级从低到高顺序排

11.adb shell cat /proc/cpuinfo 查看手机CPU,

12.adb shell ps 查看进程信息

Monkey命令实战

1.Monkey是什么?

Monkey是Android中的一个命令行工具,可以运行在模拟器或者实际设备中

向系统发送伪随机的用户事件流(按键输入、触摸屏输入、手势输入等)

实现对正在开发的应用程序进行测试

Monkey测试之一种为了测试软件的稳定性、健壮性的快速有效的方式

2.Monkey的特征

测试对象仅为应用程序包,有一定的局限性(不能对源码进行测试)

Monkey测试使用的事件流数据是随机的,不能进行自定义

可以对MonkeyTest对象,事件数量,类型、频率等进行设置

3. Monkey使用

adb shell monkey [options]

adb shell monkey -p 包名 -v 500

-p 指定测试程序包名

-v 显示默认程度的信息

500 事件数设定为500

例如: adb shell monkey -p com.android.calculator2 -v 500

4. Monkey命命令令结结果果分分析析

1. 找monkey里面那个出错的地方

2. 查看monkey里面出错前的一些事件动作,并手动执行该动作

3. 若以上步骤还不能找出,使用之前执行的monkey命令再执行一遍,seed值要一样(seed值一样,发送的伪随机事件流也一样)

4. 注意第一个switch以及其他信息

seed值和,不同event类型比例

5.Monkey测试的目的

1. ANR问题:在日志中搜索“ANR”

2. 崩溃的问题:在日志中搜索“Exception”

3. ANR:Application Not Responding,在Android中,如果应该程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应

用程序无响应对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”应用。 好的程序应该能流畅运行,不能出现ANR问题

Monkey命令进阶

1.运行时机

产品功能稳定之后进行

2. monkey更更复复杂杂的的命命令令

adb shell monkey -p packagename -v -v -- throttle 600 88

-v :代表整个Monkey运行的次数,多个 -v 可以定制Monkey报告的等级

--throttle 600 : 每个 *** 作都间隔时间600ms

88 :执行的事件数

adb shell monkey -p packagename -v -v --pct-touch 50 --pct-trackball 30 --throttle 600 88

adb shell monkey -p packagename -v -v --pct-touch 50 --pct-trackball 30 -s 1234 --throttle 600 88

--pct-touch :设置在整个过程中点击 *** 作所占的百分比

--pct-trackball: 设置滚轮在所用 *** 作中的百分比

--ignore-crashes:崩溃之后继续测试,重新启动程序

--ignore-timeouts:遇到超时,也继续执行

-v:

命令行的每一个-v将增加反馈信息的级别

Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息

Level 1提供较为详细的测试信息,如逐个发送到Activity的事件

Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity

更多monkey命令:http://xqtesting.blog.51cto.com/4626073/1430654

实测命令(经常用到的,可以参考):

adb shell monkey -p com.xx.xxx(包名)--throttle 500 --ignore-crashes --igonre-timeouts --ignore-security-exceptions --igonre-native-crashes --

monitor-native-crashes -v -v -v 1000000 >>D:\monkeyScreenLog.log

说明:忽略crashes、timeout等是为了出问题是monkey继续运行下去,希望能抓取更多的出错信息

3.可可以以练练习习使使用用的的apk包名

com.android.calculator2

com.android.browser

com.android.music

com.android.email

com.android.contacts

monkey也可以进行压力测试。

可靠性测试

      稳定性测试:长时间使用软件不会出现无响应

                  monkey:安卓系统常用稳定性和压力测试工具

                  语法:monkey -p 包名  --throttle 数值(间隔时间,单位ms) -v  数值( *** 作次数)

                      monkey -p com.emicro.emicrophone --throttle 500 -v 300

                    百分比事件

                      0:点击事件  参数--pct-touch

                      1:滑动事件      --pct-motion

                      2:缩放事件      --pct-pinchzoom

                      3:轨迹球事件    --pct-trackball

                      4:屏幕旋转      --pct-rotation

                      5:基本导航事件  --pct-nav

                      6:主要导航事件    --pct-majornav

                      7:系统按键事件    --pct-syskeys

                      8:activity启动事件  --pct-appswitch

                      9:键盘唤出隐藏事件  --pct-flip

                      10:其他事件          --pct-anyevent

      异常测试  :断电,断网,异常退出。。。

adb 调试桥

    adb devices  检查设备是否连接

    adb install apk文件路径文件名

    adb uninstall 包名  卸载

    aapt d badging  apk文件路径文件名

    adb shell    进入安卓系统

Monkey 测试简介

存放路径:Monkey程序是Android系统自带的,由Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar。

大致 *** 作流程:通过名为“monkey”的Shell脚本去启动Monkey.jar程序(shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey),在你指定的APP应用上模拟用户点击,滑动,输入等 *** 作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错。

主要目的:测试app 是否会是否会Crash。

*** 作命令格式:adb shell monkey {+命令参数}

获取Android包名方法:(注意:请开启手机开发者模式,请开启手机USB调试模式)

查看正在运行的程序的包名:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' (例如:我清理手机后台之后,开启了QQ,输入命令之后,就会出现QQ的进程,框的地方就是qq的包名)

monkey常用 *** 作命令简介

-p 包名:指定应用程序。例如:adb shell monkey -p 包名 事件总数

-v:打印log级别,-v越多日志信息越详细,最多支持3个。例如:adb shell monkey -p 包名 -v -v -v 事件总数

-s:伪随机数生成器的 seed 值,通俗的说就是个标记,后面跟数字,例如:执行adb shell monkey -s 1 -p 包名 事件总数,这个我标记了-s 1,命令 *** 作完之后,我发现有日志报错,我想重新执行这个monkey *** 作,那你就可以继续执行这个命令,排错时常用。

-f:后接测试脚本名,例如:adb shell monkey -f 脚本名 事件总数

-throttle:翻译减速的意思,后面接时间,单位为ms,,表示事件之间的固定延迟,如果不接该项,monkey将不会延迟,例如:adb shell monkey --throttle 500 -p 包名 事件总数

--pct-事件类别 11个事件百分比控制(有的是9种事件,没有--pct-pinchzoom,--pct-rotation事件)由安卓SDK决定

11种事件,按顺序罗列的

--pct-touch {+百分比}:0

翻译触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击

--pct-motion {+百分比}:1

翻译动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后d出(即up事件)

--pct-pinchzoom {+百分比}:2

翻译二指缩放,智能机上的放大缩小手势 *** 作事件

--pct-trackball {+百分比}: 3

翻译轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件

--pct-rotation {+百分比}:4

翻译屏幕旋转,横屏竖屏事件

--pct-nav {+百分比}:5

翻译基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件

--pct-majornav {+百分比}:6

翻译主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等

--pct-syskeys {+百分比}:7

翻译系统按键,系统按键事件通常指仅供系统使用的保留按键,HOME键、BACK键、拨号键、挂断键、音量键等

--pct-appswitch {+百分比}:8

翻译应用启动,应用启动事件(activity launches)即打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用

--pct-flip {+百分比}:9

翻译翻转,键盘轻d百分比,如点击输入框,键盘d起,点击输入框以外区域,键盘收回

--pct-anyevent {+百分比}:10

翻译其他类型,其他类型事件指上文中未涉及的所有其他事件,keypress、不常用的button等

百分比控制以及使用

首先注意一点,这个Event percentages在不同版本的SDK版本中顺序可能会不一样。

如果在monkey参数中不指定事件参数,这些动作都是随机分配的,11个动作其分配的百分比之和为100%,通过添加命令选项来控制每个事件的百分比。

添加事件百分比之后的情况,举例添加--pct-touch事件百分比为100:

命令: adb shell monkey -v -p 包名 --pct-touch 100 100

结果:

说明:尴尬啊,我这个vent percentages竟然有12种,多了一种什么我也不知道,但我敢肯定这跟SDK版本有关系,想知道的同学可以自己从安卓SDK中反编译出monkey源码,通过查看源码中的MonkeySourceRandom.java文件获知!查出来的同学可以告知我下。

说明:尴尬啊,我这个vent percentages竟然有12种,多了一种什么我也不知道,但我敢肯定这跟SDK版本有关系,想知道的同学可以自己从安卓SDK中反编译出monkey源码,通过查看源码中的MonkeySourceRandom.java文件获知!查出来的同学可以告知我下,我想做伸手党

-ignore-crashes:翻译忽略崩溃,当应用程序崩溃或发生失控异常时,monkey将继续运行直到计数完成。如果不设置此项,monkey遇到上述崩溃或异常将停止运行。

-ignore-timeouts:翻译忽略超时,当应用程序发生任何超时错误(如ANR,即Application Not Responding)时,monkey将继续运行直到计数完成。如果不设置此项,monkey 遇到此类超时将停止运行。

monkey测试中,如何终止运行:

方法一:

新建一个窗口

执行: adb shell ,

再执行ps | grep monkey,返回来的第一个数字,即是monkey的进程号

然后kill pid 进程号。如图

对手机进行重启

新建一个窗口

执行adb reboot

log日志导出

保存到电脑上。

执行:adb shell monkey -p 包名 -v 1000 >/Users/weixiangyang/Desktop/monkey.txt

例如:保存到电脑上标准流与错误流分开保存,分别命名为info.txt,error.txt

info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。

error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。 执行:adb shell monkey -p 包名 -v 1000 1>/Users/weixiangyang/Desktop/info.txt 2>/Users/weixiangyang/Desktop/error.txt

例如:保存到电脑上并命名为monkey.txt

保存到手机上。注意:手机要root

例如:保存到手机上并命名为monkey.txt

执行:

adb shell说明:进入adb shell后就相当于进入linux的root下面,但是没有权限在里面创建文件,所以手机要root

monkey -p 包名 -v 1000 >/mnt/sdcard/monkey.txt

注意:我的 adb shell 跟monkey XXX是分开执行的,分两行!!!

例如:保存到电脑上标准流与错误流分开保存,分别命名为info.txt,error.txt

执行:adb shell monkey -p 包名 -v 1000 1>/mnt/sdcard/info.txt 2>/mnt/sdcard/error.txt


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7157726.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存