目录
1 某路径下搜索:名称包含某字符串的所有文件
#当前路径下搜索文件**名称**包含有某字符串的文件
$ls *tag*
举例:
didi@ubuntu:/deta/Desktop/周记$ ls *笔记*
42周笔记.txt 44周笔记~ 50周小笔记.txt 第40周小笔记.txt
42周笔记.txt~ 45周笔记.txt 52周笔记.txt 第40周小笔记.txt~
44周笔记 46周笔记.txt~ git学习笔记.txt~
#在当前路径下所有文件中搜索,包含下一级路径
$find . -name <文件名称(包含扩展名)>
举例:
2 adb shell连接指定设备
假设这里有两台设备,怎么adb到指定设备呢?
#首先查看设备号
$adb devices
List of devices attached
0123456789AB device
109876543210 device
#连接adb shell
$adb -s 109876543210 shell
同样的,adb pull和adb push也可以
$adb -s 109876543210 push test.apk /sdcard/test
$adb -s 109876543210 pull /sdcard/test/test.apk
安装apk也一样
$adb -s 109876543210 install xxx.apk
#安装成功会显示Success
Success
#注意:如果apk安装包的名称中有空格,需要加右斜线。
#比如:安装包全名为 subway surf.apk,相应安装命令如下:
$adb -s 109876543210 install subway\ surf.apk
3 进程相关的命令
$ps -aux #查看系统所有进程
$pstree #查看进程树,所有进程的树状图,清晰地表明进程间的关系
4 打开pr_debug
pr_info()并不是写上去就能打印出来的。默认loglevel为7,在kernel/printk/printk.c中有定义‘
#define DEFAULT_CONSOLE_LOGLEVEL 7 //loglevel < 7 的log可以打印出来
而printk(KERN_DEBUG…)的级别是7,loglevel设为7是打不出来的,需要改为8。这样很麻烦是吧,可以通过printk的sysfs节点来修改:
$cat /proc/sys/kernel/printk
7 4 1 7
$echo 8 > /proc/sys/kernel/printk
$cat /proc/sys/kernel/printk
8 4 1 7
5 kernel dynamic debug
kernel动态调试提供一个debugfs接口,它可以用来获取已完成的调试信息列表。
比如你想打印xxx1.c文件的pr_debug信息,在系统运行的时候执行如下语句:
#echo 'file xxx1.c +p' > <debugfs>/dynamic_debug/control
如果是两个文件,则如下:
#echo 'file xxx1.c +p' > <debugfs>/dynamic_debug/control;\
> echo 'file xxx2.c +p' > <debugfs>/dynamic_debug/control
6 查看进程状态命令
$ps -ux
7 查看系统信息
$cat /proc/version #查看正在运行的系统的内核版本
$cat /proc/cpuinfo #查看cpu信息
$uname -a #查看电脑及操作系统的相关信息
8 查看系统内存信息
方法一:
$sudo dmidecode | grep -A16 "Memory Device"
方法二:
$sudo lshw -html > ~/sdcard/lshw.html
9 查看系统的各种时钟信息
$cat /sys/kernel/debug/clk/clk_summary
10 busybox find查找某文件或文件夹
$ busybox find -name <filename>
#举例:注意filename是全识别的,输错一个字母就搜不到了
$ busybox find -name test0
./周记/test0
./test0
11 查看当前工作目录路径
$ pwd
#举例
~/source_code/r_code$ pwd
/home/username/source_code/r_code
12 各种删除命令
删除文件夹:
$ rm -rf <文件夹名称>
一次性删除某文件夹下的所有文件:
#跳转到该文件夹
$ rm -f *
13 查看磁盘剩余空间
$ df -hl #查看磁盘剩余空间
14 grep用法汇总
14.1查找包含某字符串的所有文件
在看log的时候如果log量非常大,包含很多文件,而我们想搜索的关键字只包含在其中少数几个文件中,这时候怎么去找呢?强大的grep派上用场了:只需要一句
grep -rn "string" * # *表示对当前文件夹下的所有文件,同时列出字符串所在行
举例:
didin@ubuntu: ~/Downloads/log$ grep -rn "stash" *
43周笔记:111: 3.$git stash //保存当前的工作现场
43周笔记:113: 5.$git stash pop //还原本地修改
43周笔记~:111: 3.$git stash //保存当前的工作现场
43周笔记~:113: 5.$git stash pop //还原本地修改
14.2 查找某文件中包含某字符串的所有行
grep -E "str" file_name
grep -E "str1|str2" file_name
15 性能问题常用命令
15.1 查询进程的内存信息
adb shell后输入procrank
#procrank
PID Vss Rss Pss Uss Swap PSwap USwap ZSwap cmdline
4364 8578204K 479172K 182546K 110820K 0K 0K 0K 0K system_server
4684 6416764K 264868K 84342K 63000K 0K 0K 0K 0K com.android.systemui
......
15.2 查看进程cpu利用率
top -m 5 #查看cpu利用率前5的进程
Tasks: 407 total, 1 running, 403 sleeping, 0 stopped, 3 zombie
Mem: 3.6G total, 3.2G used, 411M free, 3.5M buffers
Swap: 2.2G total, 57M used, 2.1G free, 2.3G cached
800%cpu 7%user 0%nice 4%sys 786%idle 0%iow 4%irq 0%sirq 0%host
PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS
14268 root 20 0 35M 3.8M 3.1M R 10.7 0.1 0:00.04 top -m 10
3792 system 20 0 173M 4.0M 2.7M S 7.1 0.1 206:46.37 slogmodem
13862 root 20 0 0 0 0 I 3.5 0.0 0:03.44 [kworker/u16:5]
14267 system 20 0 35M 3.0M 2.4M S 0.0 0.0 0:00.00 sleep 60s
14242 system 20 0 35M 3.0M 2.4M S 0.0 0.0 0:00.00 sleep 120s
16 查看图形界面下文件夹的路径
快捷键ctrl+L,使得文件夹窗口中的文件路径可以编辑、复制、粘贴
17 查看当前目录空间大小和分配情况
1.查看当前目录空间大小
mobilphone:/data # du -sh
4.5G .
2.查看当前目录各个文件的大小
mobilphone:/data # du -h -d 1 .
27K ./unencrypted
3.5K ./bootchart
18K ./apex
3.5K ./app-staging
8.5M ./misc
14K ./local
3.5K ./preloads
1.7M ./vendor
11K ./vendor_ce
14K ./vendor_de
49M ./data
....
3.3G ./ylog
3.5K ./minidump
3.5K ./server_configurable_flags
3.5K ./corefile
150M ./per_boot
4.5G .
18 查看所有加载的模块ko
lsmod |grep <ko名称>
19 ubuntu系统日志清理
sudo echo "" > system.journal
或
sudo rm -rf /var/log/*
[SP]shell脚本相关
1 循环读取某节点信息
这是一条简短的shell语句,方便在一些测试场景下循环读取节点信息,观察节点信息变化情况。
while true; do cat ./<节点名称>; echo; sleep 1; done
#比如:读取cpu cluster0 的当前频率
abc:/sys/devices/system/cpu/cpufreq/policy0 $ cat scaling_cur_freq
768000
abc:/sys/devices/system/cpu/cpufreq/policy0 $ while true; do cat ./scaling_cur_freq; echo; sleep 1; done
768000
768000
768000
768000
1200000
1200000
1200000
768000
768000
^C
abc:/sys/devices/system/cpu/cpufreq/policy0 $