Linux命令
Linux目录结构
根目录
- /
存放最经常使用的目录
- bin
存放的是系统管理使用的系统管理程序
- sbin
存放设备文件
- dev
存放配置文件
- etc
存放用户安装应用程序的文件
- usr
普通用户家目录/属主目录
- home
系统管理员root用户的家目录
- root
系统识别一些设备,会挂载到的目录
- media
临时目录,存放临时文件
- tmp
文件类型
d
- 目录文件
-
- 一般文件
l
- 链接文件
b
- 设备文件
c
- 字符文件
p
- 管道文件
dr-xr-xr-x 2 root root 4096 10月 22 10:19 bin
第一段:文件类型及文件权限
-
dr-xr-xr-x
- 第1个字符表示:文件类型
- 第2-4个字符表示:文件所有者权限
- 第5-7个字符表示:文件所属组权限
- 第8-10个字符表示:其他用户权限
第二段:文件链接个数
第三段:文件所有者
第四段:文件所属组
第五段:文件大小
- 默认单位是字节
第六段:文件最后修改时间
第七段:文件名
基本命令
查看当前用户名
- whoami
查看工作路径
- pwd
切换目录
-
返回根目录
- cd /
-
返回上级目录
- cd ..
-
返回上级的上级目录
- cd ../..
-
返回用户家目录/属主目录
-
cd ~
- 普通用户:/home/用户名/
- root用户:/root/
-
-
返回上次工作目录
- cd -
查看目录内容
-
查看指定目录内容
- ls 目标路径
-
查看当前目录下的内容
- ls
-
显示目录下的全部内容,包含隐藏文件
- ls -a
- ls --all
-
以详细信息的方式显示目录内容
- ls -l
- ll
-
以详细信息的方式显示目录的全部内容
- ls -al
-
内置参数,返回帮助信息
- ls --help
帮助命令
-
返回命令的帮助信息
-
man 命令
- 按 q 退出帮助查询
-
info 命令
-
-
显示该命令的简短信息
- whatis 命令
新建目录
-
在当前目录下新建一个目录
- mkdir 目录名
-
在当前目录下新建多个目录
- mkdir 目录1 目录2 ...
-
在指定的路径下新建一个目录
- mkdir 目标路径/目录名
-
创建多级目录
- mkdir -p a/b/c...
新建文件
-
在当前目录下创建一个文件
- touch 文件名
-
在当前目录下创建多个文件
- touch 文件名1 文件名2 ...
-
在指定的目录下创建一个文件
- touch 目标路径/文件名
-
文件不存在,直接创建并打开
- vim 文件名
- vi 文件名
复制文件
-
把当前目录下的文件复制到指定目录下
- cp 文件名 目标路径
-
把指定目录下的文件复制到目标路径下
- cp 指定路径/文件名 目标路径
-
复制文件并改名
- cp 文件名 目标路径/新文件名
-
复制目录
- cp -r 目录名 目标路径
移动文件/重命名
-
对文件/目录重命名
- mv 文件名 新文件名
-
把文件移动到目标路径
- mv 文件名 目标路径
-
移动并改名
- mv 文件名 目标路径/新文件名
删除文件
-
删除当前目录下的文件,有提示
- rm 文件名
-
强制删除文件,不提示删除
- rm -f 文件名
删除目录
-
删除空目录
- rmdir 目录名
-
删除目录,有提示
- rm -r 目录名
-
直接删除目录
- rm -rf 目录名
管道符
- |
清除屏幕命令
- clear
压缩与解压缩
-
.gz
-
压缩
- gzip 被压缩的文件名
-
解压
- gunzip xxx.gz
-
-
.tar.gz
-
压缩
-
tar -zcvf 压缩后的文件名.tar.gz 被压缩的目录
-
把test目录打包成test.tar.gz压缩文件
- rar -zcvf test.tar.gz test
-
-
解压
-
把文件解压到当前目录
- tar -zxvf xxx.tar.gz
-
把文件解压到指定路径
- tar -zxvf xxx.tar.gz -C 目标路径
-
-
选项
-
z
- 解压/压缩文件(gzip的压缩文件)
-
x
- 解压
-
c
- 产生.tar包文件
-
v
- 显示详细信息
-
f
- 被压缩/解压文件
-
-
-
.zip
-
压缩
-
压缩文件
- zip 压缩后的文件名.zip 被压缩的文件
-
压缩目录
- zip -r 压缩后的文件名.zip 被压缩的目录
-
-
解压
- unzip xxx.zip
-
-
.bz2
-
压缩
-
bzip2 被压缩的文件
-
只能压缩一般文件
-
不能保留原文件
- 加 -k 可以保留原文件
-
生成 .bz2文件
-
-
-
解压
- bunzip2 xxx.bz2
-
显示历史操作命令
- history
查看服务状态(root)权限
-
查看服务状态(root)权限
- service 服务名 status
-
查看sshd服务
- service sshd status
-
查看防火墙服务
- service iptables status
服务的开启与关闭(root权限)
-
开启
-
立即开启,重启失效
- service 服务名 start
-
重启后生效
- chkconfig 服务名 on
-
-
关闭
-
立即关闭,重启失效
- service 服务名 stop
-
重启后生效
- chkconfig 服务名 off
-
远程登录Linux
-
ssh -p 端口号 用户名@主机IP
- 如果端口号是22,-p 22 可以省略不写
退出远程Linux系统
- logout
远程复制文件
-
下载
- scp 用户名@主机IP:文件路径 文件保存路径
-
上传
- scp 文件保存路径 用户名@主机IP:文件路径
软件安装方式
-
yum
-
安装软件
- yum install 软件名
- yum -y install 软件名
-
升级软件
- yum update 软件名
-
删除软件
- yum remove 软件名
-
查看所有安装包
- yum list
-
-
rpm
-
安装软件包并显示安装进度
- rpm -ivh 安装包文件
-
查看已安装的软件
- rpm -qa
-
查询指定软件包是否已经安装
- rpm -q 软件包名
-
删除指定软件
- rpm -e 软件名
-
-
源码安装
-
预编译
- configure --prefix="安装路径"
-
编译
- make
- 对软件进行编译,编译成二进制文件
-
安装
- make install
- 把生成的二进制文件复制到指定的安装路径
-
执行文件
- ./文件名称
修改文件权限
-
修改该文件所有权限
- chomd +/-/= r/w/x 文件名
-
修改该文件的指定权限
- chomd u/g/o +/-/= r/w/x 文件名
-
用数字修改权限
- chomd 数字权限 文件名
-
修改目录权限
-
chomd 数字权限 -R 目录名
- 加 -R 将修改目录所有子目录子文件的权限
- 不加 -R 只修改目录本身的权限
-
修改文件所有者
-
文件
- chown 用户名 文件名
-
目录
-
chown -R 用户名 目录名
- 加 -R 将修改目录所有子目录子文件的所有者
- 不加 -R 只修改目录本身的所有者
-
修改文件所属组
-
文件
- chgrp 组名 文件名
-
目录
- chgrp -R 组名 文件名
用户与组权限(root)
-
修改用户/新增用户
- useradd 用户名
-
修改/设置密码
- passwd 用户名
-
查看用户所属组
- groups 用户名
-
创建组
- groupadd 组名
-
修改用户所属组
- usermod -g 组名 [-G 组名] 用户名
-
创建用户时指定组
- useradd 用户名 -g 组名
-
删除用户
- userdel
-
删除组
- groupdel
查看文件内容
-
正序查看文件内容
- cat 文件名
-
带行号正序查看文件内容
- cat -n 文件名
-
倒叙查看文件内容
- tac 文件名
-
带行号倒叙显示文件内容
- cat -n 文件名 | tac
-
查看大文件,显示阅读百分比
- more 文件名
-
查看大文件,不显示阅读百分比
- less 文件名
-
默认显示文件的前10行
-
head 文件名
-
显示文件前5行
- head -5 文件名
-
-
默认显示文件的最后10行
-
tail 文件名
-
显示文件最后7行
- tail -7 文件名
-
动态查看文件
-
tail -f 文件名
- 一般用于监控日志文件
-
-
-
举例
-
带行号显示文件的7-12行内容
- cat -n 文件名 | head -12 | tail -6
-
如何查看某文件的第100内容
- cat -n 文件名 | head -100 | tail -1
-
查找文件位置
-
查找文件位置
- find 路径 查找属性 属性值
-
按文件名查找
-
从根目录开始查找所有文件是test的
- find / -name 'test'
-
从/tmp目录查找所有以.txt结尾的文件
- find /tmp -name '*.txt'
-
-
按文件所有者查找
- -user
-
按文件所属组查找
- -group
-
按文件大小查找
- -size
-
按文件类型查找
- -type
-
逻辑组合查询
-
且
- -a
-
或
- -o
-
从/tmp目录下查找所有者是stf目录文件
- find /tmp -user 'stf' -a -type d
-
-
举例
-
删除/tmp/test目录下所有的以.txt结尾的文件
-
find /tmp/test -name '*.txt' | xargs rm -f
- xargs 是一个强有力的命令,
它能够捕获一个命令的输出,
然后传递给另外一个命令。
- xargs 是一个强有力的命令,
-
-
在/etc目录下查找httpd.conf文件
- find /etc -name httpd.conf
-
在/etc目录下查找文件名包含pd的文件
- find /etc -name pd
-
查找文件内容
-
查找文件内容
- grep 关键字 文件名
-
查找/etc/passwd /etc/group中是否有root
- grep root /etc/passwd /etc/group
-
常用参数
-
-n
- 显示匹配行及行号
-
-w
- 进行完成匹配,类似于精确查询
-
-c
- 只输出匹配行的计数
-
-o
- 匹配一次输出一次
-
-v
- 反向过滤文本行的搜索
-
-
举例
-
统计root在/etc/passwd文件中出现的次数
- grep -o root /etc/passwd | grep -c root
-
显示出包含 error 字符串的行
- grep "error" /tmp/a/test.txt
-
显示出不含 error 字符串的行
- grep -v "error" /tmp/a/test.txt
-
显示出不含 error 和 warning 字符串的行
- grep -v "error" /tmp/a/test.txt | grep -v "warning"
-
网络
-
查找IP
- ifconfig
-
查看端口号
-
netstat
-
检查某进程是否被监听
- netstat -anp | grep PID号
-
检查端口号占用
- netstat -ano | grep 端口号
-
进程
-
查看所有进程
- ps -A
-
查看所有运行中的进程
- ps aux | less
- 按 q 退出
-
查看进程树
- pstree
-
查看指定应用进程
- pgrep 应用名
- ps -A | grep 服务名
-
结束进程
-
kill -9 PID号
- -9:立即结束程序的进行
-
-
查看并筛选 跟进程名有关的进程
- ps -ef | grep 关键字
实时查看系统资源
-
top
- 检视服务器的负载
- 性能测试时用
重定向
-
覆盖写
-
追加写
-
显示系统时间
-
显示系统时间
- date
-
修改系统时间
-
年/月/日
- date -s '月/日/年'
-
时/分/秒
- date -s '时/分/秒'
-
切换用户
- su 用户名
重启
- reboot
关机重启
-
所有用户
-
关机
- poweroff
-
重启
- reboot
-
-
root
-
立即重启
- shutdown -r now
-
立即关机
- shutdown -h now
-
10分钟后关机
- shutdown -h 10
-
定时关机
- shutdown -h 22:00
-
-
关机(挂起)
- halt
远程访问Linux时连接失败的解决方案
1、关闭防火墙
-
立即关闭
- service iptables stop
-
永久关闭
- chkconfig iptables off
2、开启sshd
-
立即开启
- service sshd start
-
永久开启
- chkconfig sshd on
vim编辑器
一般模式进入编辑模式
-
a
- 光标之后插入内容
-
i
- 光标之前插入内容
-
o
- 光标之下新增一行
-
A
- 光标所在行行尾插入内容
-
I
- 光标所在行行首插入内容
-
O
- 光标之上新增一行
一般模式
-
光标模式
-
0(零)
- 移动到光标所在行行首
-
$
- 移动到光标所在行行尾
-
gg
- 移动到文件第一行行首
-
G
- 移动到文件最后一行行首
-
nG
- 移动到第n行的行首
-
-
复制
-
yy
- 复制光标所在行
-
nyy
- 从光标所在行向下复制n行
-
-
粘贴
-
p
- 粘贴到光标所在行之下
-
P
- 粘贴到光标所在行之上
-
-
删除
-
dd
- 删除光标行
-
ndd
- 从光标所在行向下删除n行
-
-
撤销
- u
-
反撤销
- Ctrl+R
-
查找
-
查找内容
- /查找内容
-
查找下一个
- n
-
查找上一个
- N
-
命令模式
-
保存
- :w
-
退出
- :q
-
保存退出
- :wq
-
强制退出
- :q!
-
设置显示行号
- set nu
-
取消行号
- set nonu
-
替换
-
:1,$ s /oldstr/newstr/g
-
1,$
- 表示替换范围
- 1,$:从第一行到文件最后,表示文件的全部内容
- 3,9:替换第3行到第9行
- 5:只替换第5行
- 如果该位置没有范围,表示当前行
-
s
- 表示替换
-
/oldstr/newstr
- 用newstr替换oldstr
-
/g
- 表示全部替换
- 如果不写/g,只替换一次
-
-
搭建OA系统测试环境
安装配置应用服务器
-
安装配置JDK
-
1、将jdk-7u80-linux-x64.rpm文件上传到/tmp目录下
-
2、安装JDK
- rpm -ivh jdk-7u80-linux-x64.rpm
-
3、配置环境变量
- vim /etc/profile
- 按G键
- 按o键
- export JAVA_HOME=/usr/java/jdk1.7.0_80
- PATH=$JAVA_HOME/bin:$PATH
- 按ESC键
- :wq
-
4、让配置文件生效
- source /etc/profile
-
5、检查JDK版本号
- java -version
-
拍个快照:JDK安装配置成功
-
-
安装tomcat
-
1、将apache-tomcat-7.0.39.zip文件上传到/tmp目录下
-
2、在根目录下新建一个tomcat目录
- mkdir /tomcat
-
3、将压缩文件移动到/tomcat目录
- mv /tmp/apache-tomcat-7.0.39.zip /tomcat
-
4、进入/tomcat并解压
- cd /tomcat
- unzip apache-tomcat-7.0.39.zip
-
5、进入解压后的bin目录
- cd apache-tomcat-7.0.39/bin
-
6、启动tomcat服务
-
./startup.sh
-
权限不够
-
chomd -R 777 .
- 在执行一遍启动命令
-
-
-
7、打开浏览器,输入服务器IP:8080,显示tomcat首页
-
拍个快照:tomcat安装成功
-
安装配置mysql
-
准备工作
-
1、检查本地是否安装mysql
- rpm -qa | grep mysql
-
2、修改yum的下载地址
- curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
-
3、卸载mysql
- yum remove mysql mysql-server qt-mysql mysql-libs
-
4、在线安装gcc编译器
- yum -y install gcc gcc-c++ ncurses-devel
-
-
安装mysql步骤
-
1、将mysql源码安装包mysql-5.1.30.tar.gz上传到/tmp目录下
-
2、进入/tmp目录,解压安装包文件
- cd /tmp
- tar -zxvf mysql-5.1.30.tar.gz
- ls
-
3、进入解压后的目录
-
cd mysql-5.1.30
-
ls
- 可以看到configure(预编译)
-
-
4、预编译
-
./configure --prefix=/usr/local/mysql
-
出现Thank you ...
- 说明编译成功
- 如果编译失败,重新下载gcc,再次执行预编译
-
-
5、编译
- make
-
6、安装
- make install
-
7、检查是否成功
- ls /usr/local/mysql
- 可以看到bin、docs等目录
-
拍个快照:mysql安装成功
-
8、将配置文件复制到/etc目录并改名为my.cnf
- cd /tmp/mysql-5.1.30/support-files/
- ls
- cp my-medium.cnf /etc/my.cnf
-
9、修改配置文件
-
vim /etc/my.cnf
-
查找ship
- /skip
-
按两次n键
- 找到skip-federated
-
按i键
-
输入#键
-
按ESC键
-
:wq
-
-
10、创建一个mysqlgrp租
- groupadd mysqlgrp
-
11、创建用户mysqluser,并指定到mysqlgrp
- useradd mysqluser -g mysqlgrp
-
12、修改mysql安装目录的所有者和所属组
- cd /usr/local
- ls -l
- chown -R mysqluser mysql
- chgrp -R mysqlgrp mysql
-
13、进入mysql的bin目录,创建数据库
-
cd mysql/bin
-
./mysql_install_db --user=mysqluser
- 没有没有两个OK,重新执行第8,9步,在执行第13步
-
-
14、启动mysql服务
- ./mysqld_safe --user=mysqluser &
- 按Ctrl+C键
-
15、检查mysql服务是否启动成功
-
方法一:登录服务器
-
./mysql -uroot -p
-
出现密码直接回车
-
出现2002错误的解决
-
直接删除var目录,重新执行13、14步
- cd ..
- rm -rf var
- cd bin
- ./mysql_install_db --user=mysqluser
- ./mysqld_safe --user=mysqluser &
-
如果还报错:修改var目录的所有者
- cd ..
- ls -l
- chgrp -R mysqlgrp var
- cd bin
- ./mysql_safe --user=mysqluser &
-
-
出现mysql> 登录成功
-
返回Linux命令行
- exit
-
-
方法二:监听mysql进程
- netstat -anp | grep mysql
-
-
安装部署项目
-
1、将OA项目的安装包oa.zip上传到/tmp目录下
-
2、把项目包移动到tomcat服务器的webapps目录下
- mv /tmp/oa.zip /tomcat/apache-tomcat-7.0.39/webapps
-
3、解压项目包
- cd /tomcat/apache-tomcat-7.0.39/webapps/
- ls
- unzip oa.zip
-
4、将项目数据导入mysql
- cd /usr/local/mysql/bin
- ./mysql -uroot -p < /tomcat/apache-tomcat-7.0.39/webapps/oa/setup/cwbbs.sql
- ./mysql -uroot -p < /tomcat/apache-tomcat-7.0.39/webapps/oa/setup/redmoonoa.sql
-
5、重启tomcat服务
- cd /tomcat/apache-tomcat-7.0.39/bin
- ./shutdown.sh
- ./startup.sh
-
6、打开浏览器输入服务器IP:8080/oa,出现OA系统的登录页面
adb命令
基本命令
-
基本命令
-
查看adb版本信息
- adb version
-
获取设备号
-
adb get-serialno
-
检查设备是否连接成功
- adb devices
-
-
重启adb服务
-
停止adb服务
- adb kill-server
-
启动adb服务
-
adb start-server
-
指定adb server的网络端口
- adb -P 端口号 start-server
-
-
-
手机重启
- adb reboot
-
等待设备连接
- adb wait-for-device
-
fastboot状态操作
-
手机进入fastboot界面
- adb reboot bootloader
- 手机重启,长按电源键和音量减键
-
fastboot状态下重启手机
- fastboot reboot
-
fastboot状态下查看设备号
- fastboot devices
-
-
进入手机超级终端
- adb shell
- 使用exit退出手机命令行
-
重启到Recovery界面
- adb reboot recovery
-
连接/断开设备
-
连接指定设备
- adb connect 设备名
-
断开指定设备
- adb disconnect 设备名
-
同时连接多台设备,adb操作要指定设备
- adb -s 设备号 操作命令
-
-
关机
- adb shell reboot -p
-
查看进程状态
- adb shell ps
-
-
应用管理
-
安装/卸载应用程序
-
安装应用程序
-
adb install apk文件
- 在 /data/data/ 的目录下生成一个包名
-
-
重复/覆盖安装应用程序
- adb install -r apk文件
-
卸载应用程序
-
adb uninstall 包名
-
卸载但保留数据和缓存目录
- adb uninstall -k 包名
-
-
-
清除应用数据与缓存
- adb shell pm clear 包名
-
查看应用详细信息
- adb shell dumpsys activity 包名
-
查看包名
-
查看所有应用
- adb shell pm list package
-
查看系统应用
- adb shell pm list package -s
-
查看第三方应用
- adb shell pm list package -3
-
包名包含某字符串的应用
- adb shell pm list package 包名包含的字符串
-
adb logcat | findstr -i displayed
-
查看将要启动或者退出app的包名
- adb shell am monitor
-
查看当前界面的app的包名
- adb shell dumpsys activity activities | findStr mFocusedActivity
- adb shell dumpsys activity activities | find "mFocusedActivity"
- adb shell dumpsys activity | findstr mFocuse
- adb shell dumpsys window | findstr mCurrentFocus
- adb shell dumpsys window windows | findstr mFocusedApp
- adb shell dumpsys window w |findstr / |findstr name=
-
查看所有启动的app的包名
- adb shell dumpsys activity top | find "ACTIVITY"
- adb shell dumpsys activity activities | findstr "Run"
-
adb shell monkey -p 包名 -v -v -v 1
- 找到“using”开头的那一句
-
-
获取应用程序包
-
方法一:windows上使用aapt的命令解析apk文件
- aapt dump badging apk文件
- aapt d badging apk文件
-
方法二:反编译apk文件中的编译文件
-
方法三:借助测试工具
-
方法四:查看手机日志
-
方法五:查看第三方应用的包名
-
adb shell pm list package -3
- 只安装一个应用程序
-
-
-
查看正在运行的 Services
-
adb shell dumpsys activity services [包名]
- 包名不写,查看设备所有的services
- 不一定是完整包名,也可以只写一部分
-
-
-
与应用交互
-
启动应用/ 调起 Activity
-
adb shell am start 包名/引导页名称
-
adb shell am start -W -S 包名/引导页名称
-
-W
- 可显示应用启动时间
-
-S
- 强制退出该APP,在重新打开
-
-
-
强制停止应用
- adb shell am force-stop 包名
-
-
文件管理
-
把电脑上的文件上传到手机内部
-
adb push
-
local
- 本地文件的路径及文件名
-
remote
- 手机中的路径
-
-
-
把手机上文件下载到本地电脑
- adb pull
[ ]
- adb pull
-
-
截屏
- adb shell screencap /sdcard/文件名.png
- adb pull 到电脑本地
-
录制屏幕
- adb shell screenrecord /sdcard/文件名.mp4
- 需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒
-
重新挂在文件系统
- adb remount
-
退出手机命令行
- exit
模拟手机操作
-
在屏幕坐标(x,y)处进行点击
- adb shell input tap x y
-
从屏幕(x1,y1)滑动到(x2,y2)
- adb shell input swipe x1 y1 x2 y2
-
输入文本xxx
- adb shell input text xxx
-
模拟手机按键操作
-
home键
- adb shell input keyevent 4
-
power键
- adb shell input keyevent 26
-
解锁屏幕
- adb shell input keyevent 82
-
拍照
- adb shell input keyevent 27
-
查看 Android 设备系统属性
-
查看设备型号
- adb shell getprop ro.product.model
-
查看设备电池状况
-
查看电池信息
-
adb shell dumpsys battery
-
Current Battery Service state:
- AC powered: false //false表示没使用AC电源
- USB powered: true //true表示使用USB电源
- Wireless powered: false //false表示没使用无线电源
- status: 2 //电池状态:2:充电状态 ,其他数字为非充电状态
- health: 2 #电池健康状态:只有数字2表示good
- present: true //true表示已安装电池
- level: 63 //电池百分比
- scale: 100 //满电量时电池百分比为100%(不确定是否正确)
- voltage: 3781 //电池电压3.781V
- temperature: 250 //电池温度为25摄氏度,单位是0.1摄氏度
- technology: Li-ion //电池类型为锂电池
-
-
-
设置手机电池电量为10%
- adb shell dumpsys battery set level 10
-
恢复电池信息
- adb shell dumpsys battery reset
-
-
查看屏幕分辨率
- adb shell vm size
-
查看设备屏幕密度
- adb shell wm density
-
查看设备显示屏参数
- adb shell dumpsys window displays
-
查看设备 android_id
- adb shell settings get secure android_id
-
查看设备 Android 系统版本
- adb shell getprop ro.build.version.release
-
查看设备 IP 地址
- adb shell ifconfig | findstr Mask
-
查看手机信息
- adb shell cat /system/build.porp
-
查看手机内存信息
- adb shell cat /proc/meminfo
-
查看手机CPU信息
- adb shell cat /proc/cpuinfo
-
实时查看手机系统资源
- adb shell top | findstr 包名
-
查看应用程序的启动时间
-
adb shell am start -W 包名/引导页名称
-
例:查看轻邮APP的启动时间
- adb shell am start -W com.qiduo.mail/.guide.SplashActivity
-
APP稳定性测试
-
像系统发送伪随机的用户时间流(输入、点击、滑动等),验证测试软件的稳定性、健壮性的方法
-
monkey命令基本格式
- adb shell monkey [参数] 事件总数
-
常用参数
-
向指定的应用程序发送事件
-
-p 包名
-
指定多个程序执行monkey
- -p 包名1 -p 包名2 -p 包名3
-
-
反馈日志信息的级别
-
0级
- -v
- 仅提供启动提示、测试完成和最后结果等少量信息
-
1级
- -v -v
- 提供较为详细的日志,包括发送每个Activity的事件信息
-
2级
- -v -v -v
- 说明最详细的日志,包括测试中选中/未选中的Activity信息
-
-
忽略崩溃,继续进行
- --ignore-crashes
- 用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。
-
忽略超时,继续进行
- --ignore-timeouts
- 用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。
-
忽略APP发生许可证书错误
- --ignore-security-exceptions
- 用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。
-
忽略APP发生错误
- --kill-process-after-error
- 用于指定当应用程序发生错误时,是否停止其运行。
-
相同的monkey命令执行完全相同的事件
- -s
- seed相同,monkey测试的事件顺序相同,可用于复现问题
-
设置事件之间的间隔时间
- --throttle 间隔时间(毫秒)
-
设置事件类型及百分比
-
--pct-事件类型 事件百分比
-
事件类型
-
触摸事件
-
touch
- 触摸事件是一个down-up事件,它发生在屏幕上的某单一位置
-
-
动作时间
-
motion
- 动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成
-
-
轨迹事件
-
trackball
- 轨迹事件由一个或几个随机的移动组成,有时还伴随有点击
-
-
主要导航
-
majornav
- 这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键
-
-
基本导航
-
nav
- 导航事件由来自方向输入设备的up/down/left/right组成
-
-
-
-
导出monkey日志
- monkey命令 > 路径/文件名.txt
-
向轻邮APP发送1000个随机事件,
日志级别为1级,忽略崩溃,忽略超时,
事件间隔为1秒,动作事件40%,触摸事件40%,
轨迹事件20%,发生异常后可重现,
将日志导出到d:\apptest\monkey241.txt- adb shell monkey -p com.qiduo.mail -v -v --ignore-crashes --ignore-timeouts --throttle 1000 --pct-motion 40 --pct-touch 40 --pct-trackball 20 -s 1 1000 > d:\apptest\monkey241.txt
-
-
日志分析
-
查错步骤
- 查看monkey出错前的事件动作
- 使用相同的seed值复现
-
问题解析
-
ANR问题
- 日志中搜索“ANR”
-
崩溃问题
- 日志中搜索“CRASH”
-
其它问题
- 日志中搜索”Exception”
-
-
具体步骤
- 打开monkey日志,搜索CRASH和ANR
- 如果没有搜索到相关日志信息,则说明未发现异常问题,测试通过
- 如果搜索到相关的错误信息,找到发生错误的页面,模拟monkey发送的事件,或再次执行带seed值monkey命令
- 如果发现的是ANR的问题,还需要把/data/anr/traces.txt文件与monkey日志一起做为附件发送给开发
-
-
停止monkey命令
-
停止命令行运行
- 按 Ctrl+C 键
-
进入手机内部
- adb shell
-
查看monkey进程
- pgrep monkey
-
结束monkey进程
- kill -9 PID
-
手机日志查看与分析
-
Android 系统的日志分为两部分
- 底层Linux内核日志输出到 /proc/kmsg
- Android的日志输出到 /dev/log
-
基本命令
- adb logcat
-
日志存放路径
- adb shell
- cd /dev/log
-
应用场景
-
查看页面响应时间
-
adb logcat -s "ActivityManager"
-
-s:指定输出日志的标签
-
只输出标签名ActivityManager的日志信息
-
Displayed显示的时间就是页面响应时间
-
例:查看轻邮的页面操作日志
- adb logcat -d -s "ActivityManager" | findstr com.qiduo.mail > d:\apptest\activity.txt
-
-
-
例:查看轻邮的页面操作时间
- adb logcat -d -s "ActivityManager" | findstr com.qiduo.mail > d:\apptest\activity.txt
-
查看应用的包名和引导页
-
清空缓存区日志
- adb logcat -c
-
输出操作日志
- adb logcat -s "ActivityManager"
-
启动被测试的应用程序
-
查看日志的内容
-
-
定位缺陷
-
当手机在执行测试时发生异常时
-
输出E级别以上的日志信息
- adb logcat -d *:E > d:\apptest\errlog.txt
-
打开日志文件
-
CRASH
- 崩溃、闪退
-
ANR
- application no responding
- 应用程序无响应
-
EXCEPTION
- 异常
-
FC
- force close
- 强制关闭
-
timeouts
- 超时
-
-
-
-
日志过滤