首页 > 其他分享 >命令复习

命令复习

时间:2023-08-18 21:24:09浏览次数:36  
标签:文件 shell 复习 查看 命令 adb 日志 目录

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 是一个强有力的命令,
          它能够捕获一个命令的输出,
          然后传递给另外一个命令。
    • 在/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的下载地址

    • 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 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

          • 超时
  • 日志过滤

    • 按级别过滤日志

      • adb logcat [filter-specs]

相关文章

  • shell命令-补充
    1.whilewhilereadline 实现输出符合要求的行2.case基本结构进阶:在case外套用while实现循环输出实现简易计算器:3.grep作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是GlobalRegularExpressionPrin......
  • kafka——命令备份——docker 启动
    dockerrun-d\--namezookeeper\-p2181:2181\-eZOOKEEPER_CLIENT_PORT=2181\confluentinc/cp-zookeeperdockerrun-d\--namekafka\-p9092:9092\-eKAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.100:9092\......
  • find -exec 命令后面的\;和+
    一个-exec只能执行一个命令,而且必须在命令后面加上终结符,终结符有两个:“;”和“+”。其中“;”会对每一个find到的文件去执行一次cmd命令。而”+“让find到的文件一次性执行完cmd命令。为什么必须有终结符?因为一个find后面可以有多个-execcmd,所以必须要有终结符分割他们。如果不......
  • Linux基础命令
    文件目录操作命令: 0.查看文件:ls[-al][dir]  :显示指定目录下的文件内容,-a表示显示所有,包括隐藏文件 1.切换工作路径:cd[dirName] ~ 表示用户的home目录.  表示目前所在的目录.. 表示当前目录的上级目录 2.显示文件内容:cat[-n]fileName-n表示有1开始输出带行数......
  • ansible入门指南 - ansible的常用命令
    ansible的常用命令运行ansible命令的时候会使用ansible.cfg配置文件配置文件优先级为ANSIBLE_CONFIG指定的文件>~/.ansible.cfg>/etc/ansible/ansible.cfgansibleansible命令可以用来运行ad-hoc指令ansible-config配置文件相关的功能,可以运行以下命令生成一个默......
  • 软件测试|Linux三剑客之grep命令详解
    简介grep是一款在Linux和类Unix系统中广泛使用的文本搜索工具。它的名字来源于GlobalRegularExpressionPrint(全局正则表达式打印),它的主要功能是根据指定的模式(正则表达式)在文本文件中搜索并打印匹配的行。grep非常强大且灵活,可以用于日志分析、文件过滤、代码搜索等多种场......
  • 软件测试|Linux三剑客之sed命令详解
    简介sed(StreamEditor)是一款流式文本编辑器,在Linux和类Unix系统中广泛使用。它的设计目的是用于对文本进行处理和转换,可以用于替换、删除、插入、打印等操作。sed命令通过逐行处理文本,允许您使用简单的命令来编辑大量文本数据。本文将详细介绍sed命令的基本用法和一些常见的......
  • Docker常用命令
    dockerimages查看本地镜像dockersearchcentos搜索镜像dockerpullcentos:7下载centos7镜像dockertagcentos:7mycentos:1修改本地镜像的名字dockerrmicentos:7删除本地镜像dockerps-a查看所有容器,包括已经停止的容器dockerps查看正在运行的容器8dockerstop......
  • shell select命令语句 用户多选
    select命令语句,默认只能输入一个选择项。但有时候需要让用户输入多个选项,就需要加for循环处理多选项了。一、示例代码#!/usr/bin/envbashchoices=('one''two''three''four''five')#samplechoicesselectdummyin"${choices[@]}";do#present......
  • docker容器命令
    一、容器容器是基于镜像创建的一个运行实例,可以被启动、停止、删除等操作。容器是动态的,它可以在运行时修改,可以在容器内安装应用程序、修改配置等。每个容器都是相对独立的、隔离的运行环境,与宿主机和其他容器隔离开来。简而言之,一个镜像可以创建多个容器。每个容器都使用相同的镜......