一句话脚本系列之logcat过滤指定进程的log

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/44701657

引言

使用场景:

我在平时的工作中偶尔需要开发或者调试一下apk,重点是放在应用的logcat输出上,但是又由于非常不愿意打开ADT这个吃内存大户,那么我就选择了直接在串口下输入logcat并结合grep过滤出需要调试的进程的所有log。这里面有一个关键处是:在调试过程中需要多次杀掉并重启应用,即该应用的进程id在整个调试过程中并不是一个固定值。

一般用法:

  1. 输入logcat
  2. 查看当前运行的apk进程id
  3. 将该进程id保存到一个临时变量中
  4. 使用logcat | grep PID过滤出该进程的所有log

一句话脚本用法:

PID=`logcat -d -s XXX | tail -n 1 | sed 's/.*( *\([0-9]*\)).*/\1/'` && logcat -v time | grep --color $PID

上面的脚本分解步骤是:

先输出指定TAG的logcat

然后截取最后一行(如果是截取第一行,很有可能是上一次进程的log信息)

过滤出其中的进程号

再次输出log并使用进程号过滤

logcat -d -s XXX说明

  -d              dump the log and then exit (don‘t block)

  -s              Set default filter to silent.

使用-d参数表示只需要dump出现当前的logcat即可,因为在前两步中我们的目的是获取到应用的进程号;而如果不使用-d参数,则使用管道后想要得到最后一行就不可能了。

-s参数是指定应用中的任意一个TAG即可。有人就疑问了,为什么不直接使用该TAG进行过滤即可,原因在于:通常一个应用中每个子模块都会有独立的TAG以便标识。

tail -n 1说明

  -n, --lines=K            output the last K lines, instead of the last 10;

tail命令和head命令相反,默认是输出最后10行内容,我们这里只需要最后一行即可,过使用-n 1参数.

sed ‘s/.*( *\([0-9]*\)).*/\1/‘说明

先看一下logcat -d -s XXX | tail -n 1后的输出:

V/XXX    (  238): this is a test log ...

这里我们使用sed的目的就是取出括号中的进程号部分,这里有两种思路来实现:

思路一:将括号中的内容匹配出来(上面一句话脚本中即使用了该方法)

思路二:将括号外的内容删除(即保留括号内的内容)

两种方法都不算再复杂,请自行选择。

logcat -v time | grep --color $PID说明

这部分就简单了,就是logcat输出然后在使用grep过滤一下即可,只不过这里使用了--color参数,实际上就是对grep的结果高亮一下。也算是让全黑的输出增加一点色彩。

总结

这个一句话脚本最主要的部分就是使用sed过滤出目标字符串,以及通过临时变量传递数值的方法。

另外写这篇博客的一个收获就是我又学到了另外一种思路来过滤出目标内容:

PID=`logcat -d -s P2PLib | tail -n 1 | sed 's/[^)]*( *\|)[^(]*//g'` && logcat -v time | grep --color $PID
时间: 2024-07-30 20:05:01

一句话脚本系列之logcat过滤指定进程的log的相关文章

Android Studio如何选择查看指定进程的log?

今天说一个简单的东东,关于Android Studio在logcat中如何查看指定进程的log. 关于过滤你自己所开发的应用的log,在这篇文章中:Android Studio如何给log添加过滤项(Filters)?有提及.当 然很多时候可能我们会有这样的场景,我们想看某一个进程的log,比如我想看酷狗的log,但是如果process那栏的进 程很多,这个时候logo也会非常多,这种情况下,你很难分辨出哪个logo是属于酷狗的. 其实,Android Studio还是有和Eclipse一样的选

一句话脚本系列之将svn有改动的文件临时备份起来

引言 使用场景: 我所在的开发环境下,使用的是svn版本管理工具,而相对于git来讲,如果有时候改动的文件较多,但是并不是全部都需要提交(或需要按照一个case一个commit来提交),那么如何进行筛选处理呢?按照git的用法就是git add指定的文件,然后git ci即可,但是对于svn,尤其是在命令行下操作就没有办法了. 一般用法: 将已修改完成的整个目录备份一下 将暂时不需要提交的文件或代码块进行还原 提交本次修改 将备份的其他修改再覆盖回工作目录 一句话脚本用法: TEMP_DIR=~

一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42609733 引言 使用场景: 我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中:另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址. 一般用法: 使用ifconfig eth0读取网卡信息 手动将IP地址或MA

一句话脚本系列之统计文件夹下各种后缀名的文件个数

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42582425 引言 使用场景: 我所在的QQ群中最近聊的是热火朝天,也就导致着我的QQ缓冲文件夹的大小在疯涨,满500M的时候QQ客户端就会提示用户需要清除一下缓存文件夹了.其中缓冲文件夹中最大的部分就是各种图片文件,包括各种格式的图片.在删除前,我就想按照图片格式进行一下分类后备份到其他文件夹内.这个时候我就需要做一下统计了: 当前文件夹下有几种格式(后缀名)的图片

一句话脚本系列之修改smb用户密码

引言 使用场景: 我所在的smb环境下,只要出现网络异常断开后,再次打开smb共享目录就会出现问题,这个时候就需要在shell下重新设置smb的密码. 标准用法: 使用sudo smbpasswd nferzhuang来设置nferzhuang的smb密码,输入命令后还需要输入一次sudo的密码和两次smbpasswd的密码 [email protected]:~$ sudo smbpasswd nferzhuang [sudo] password for nferzhuang: New SMB

zabbix使用自己编写脚本模板和zabbix自带模板两种方法添加对指定进程和端口的监控

zabbix使用自己编写脚本模板和zabbix自带模板两种方法添加对指定进程和端口的监控 1.自带监控模板进行os的监控 进入/usr/local/zabbix/etc/zabbix_agentd.conf 配置文件修改 LogRemoteCommands=1     ###开启脚本功能 Server=192.168.5.129     ##修改zabbix指向的服务器: 重启zabbix_agentd.zabbix_server服务 在配置-->主机-->添加主机--> 配置主机信息主

Shell脚本之监视指定进程的运行状态

在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在LINUX上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率.CPU的使用率等. 现用shell脚本实现指定进程的运行状态. 直接上代码. #!/bin/sh echo "`date`" echo "Start $0---------" echo "" #每十秒监视一下 sec=10 #取得指定进程名为mainAPP,内存的使用率,进程运行状

Oracle DBA管理包脚本系列(二)

该系列脚本结合日常工作,方便DBA做数据管理.迁移.同步等功能,以下为该系列的脚本,按照功能划分不同的包.功能有如下: 1)数据库对象管理(添加.修改.删除.禁用/启用.编译.去重复.闪回.文件读写.会话管理.表空用.用户/权限管理): 2)数据库分析: 3)数据库备份: 4)数据库同步: 5)数据库数据导出: 6)获取数据库对象源码: 7)数据库对比智能升级: ...... 更多功能请自行体验. 本系列包依赖于Oracle DBA管理包脚本系列系列(一)的脚本. EXEC PKG_DBMANA

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件 shell脚本如下echo "%CPU,%MEM" > cpu_test.csvpid=1 #Can be change by yourselfwhile true do top -bn1 -n 1 -p $pid | tail -1 | awk '{ print $9,$10 }' | sed 's/ /,/' >> cpu_test.csv sleep 2 #delay timedone 脚