Android的dumpsys命令

我们都知道Android是基于Linux的操作系统,它使用的是默认的Shell是Ash,之前的一篇文章有提到过Shell脚本的简单介绍》,但是这个东西很明显是不能满足Android需求的,所以Google开发了很多针对Android的命令行工具。

从git上把Android的源码拉下,就会发现有一个cmds的文件夹,里边放着的全是Google为Android开发的shell命令。其中dumpsys${path}/frameworks/native/cmds/dumpsys目录,如果感兴趣可以自行去研究研究。

执行adb shell dumpsys,Android就会把系统里边的各种服务的状态给你dump出来。这里要提一下,不同的Android版本提供的服务会有所不同,不同的ROM厂商也会定制自己的服务跑在系统里边。

我的手机小米4C,MIUI6.3.31的系统(Android5.1.1),Dump出来的 结果大概是这样子。

Currently running services:
  DisplayFeatureControl
  DockObserver
  MiuiBackup
  MiuiInit
  SurfaceFlinger
  accessibility
  account
  activity
  alarm
  android.security.keystore
  appops
  appwidget
  assetatlas
  audio
  backup
  battery
  batteryproperties
  batterystats
  bluetooth_manager
  clipboard
  cneservice
  com.qualcomm.qti.auth.fidocryptodaemon
  com.xiaomi.mtservice
  com.xiaomi.vsimservice
  commontime_management
  connectivity
  consumer_ir
  content
  country_detector
  cpuinfo
  dbinfo
  device_policy
  devicestoragemonitor
  diskstats
  display
  display.qservice
  dpmservice
  dreams
  drm.drmManager
  dropbox
  entropy
  ethernet
  fingerprint
  gfxinfo
  hardware
  imms
  ims
  input
  input_method
  iphonesubinfo
  isms
  isub
  jobscheduler
  launcherapps
  location
  locationpolicy
  lock_settings
  media.audio_flinger
  media.audio_policy
  media.camera
  media.player
  media.sound_trigger_hw
  media_projection
  media_router
  media_session
  meminfo
  miui.fdpp
  miui.security.keystore
  miui.shell
  miui.whetstone
  miui.whetstone.klo
  miui.whetstone.mcd
  miui.whetstone.net
  miui.whetstone.power
  mount
  netpolicy
  netstats
  network_management
  network_score
  notification
  package
  permission
  phone
  power
  print
  procstats
  qti.ims.connectionmanagerservice
  restrictions
  rttmanager
  samplingprofiler
  scheduling_policy
  search
  security
  sensorservice
  serial
  servicediscovery
  simphonebook
  sip
  statusbar
  telecom
  telephony.registry
  textservices
  trust
  uimode
  updatelock
  usagestats
  usb
  user
  vendor.qcom.PeripheralManager
  vibrator
  voiceinteraction
  wallpaper
  webviewupdate
  wfdservice
  whetstone.activity
  wifi
  wifip2p
  wifiscanner
  window

然后后面还有很长,紧接着会把每个服务的dump的详细状况列举出来。这里我们能看到有几个Miui、com.xiaomi 开头的,这就是小米公司提供的服务。其他大部分是Android的标准的服务。

为了方便查看,我们可以传一个参数,来过滤掉多余的信息,比如dumpsys meminfo查看各个进程所占内存的情况。

下面我们就来介绍几个常用的services,默认是在Android的shell环境下。

  • account:账号管理
    就是App向AccountManager注册的账号,执行dumpsys account,会列举出绑定的账号,和各个App注册的ServiceInfo。
  • devicestoragemonitor存储状态
    执行dumpsys devicestoragemonitor,主要是会显示磁盘的使用状况
    结果:
Current DeviceStorageMonitor state:
  mFreeMem=8.55 GB mTotalMemory=11.31 GB
  mFreeMemAfterLastCacheClear=8.55 GB
  mLastReportedFreeMem=8.55 GB mLastReportedFreeMemTime=-21m31s397ms
  mLowMemFlag=false mMemFullFlag=false
 mIsBootImageOnDisk=true  mClearSucceeded=false mClearingCache=false
  mMemLowThreshold=500 MB mMemFullThreshold=1.00 MB
  mMemCacheStartTrimThreshold=375 MB mMemCacheTrimToThreshold=750 MB
  • activity:跟Activity相关的组件的状态
    这个命令支持子命令,通过-h可以看到子参数的列表。
    执行dumpsys activity -h,查看到的参数列表
Activity manager dump options:
  [-a] [-c] [-p package] [-h] [cmd] ...
  cmd may be one of:
    a[ctivities]: activity stack state
    r[recents]: recent activities state
    b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state
    i[ntents] [PACKAGE_NAME]: pending intent state
    p[rocesses] [PACKAGE_NAME]: process state
    o[om]: out of memory management
    prov[iders] [COMP_SPEC ...]: content provider state
    provider [COMP_SPEC]: provider client-side state
    s[ervices] [COMP_SPEC ...]: service state
    as[sociations]: tracked app associations
    service [COMP_SPEC]: service client-side state
    package [PACKAGE_NAME]: all state related to given package
    all: dump all activities
    top: dump the top activity
    write: write all pending state to storage
    track-associations: enable association tracking
    untrack-associations: disable and clear association tracking
  cmd may also be a COMP_SPEC to dump activities.
  COMP_SPEC may be a component name (com.foo/.myApp),
    a partial substring in a component name, a
    hex object identifier.
  -a: include all available server state.
  -c: include client state.
  -p: limit output to given package.

这里非常值得一提的就是 OOM参数,这里是指被踢出内存的优先级,也就是我们常说的进程优先级,值越小,就优先级越高,越不容易被杀,可以出现负数,系统App一般才会为负数,一般App最高为0。
当然你还可以直接查看进程的优先级oom_adj的值

//查看进程的优先级
cat /proc/${pid}/oom_adj
  • battery:电池状态
    执行dumpsys battery
    结果:
Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  status: 5
  health: 2
  present: true
  level: 100
  scale: 100
  voltage: 4376
  temperature: 272
  technology: Li-poly
  • batterystats:各应用耗电量信息
    支持子命令的,执行dumpsys batterystats -h查看参数列表
Battery stats (batterystats) dump options:
  [--checkin] [--history] [--history-start] [--unplugged] [--charged] [-c]
  [--reset] [--write] [-h] [<package.name>]
  --checkin: format output for a checkin report.
  --history: show only history data.
  --history-start <num>: show only history data starting at given time offset.
  --unplugged: only output data since last unplugged.
  --charged: only output data since last charged.
  --reset: reset the stats, clearing all current data.
  --write: force write current collected stats to disk.
  <package.name>: optional name of package to filter output by.
  -h: print this help text.
Battery stats (batterystats) commands:
  enable|disable <option>
    Enable or disable a running option.  Option state is not saved across boots.

    Options are:
      full-history: include additional detailed events in battery history:
          wake_lock_in and proc events
      no-auto-reset: don't automatically reset stats when unplugged
  • alarm:Alarm的唤醒队列信息
    查看放到定时队列中的事件
  • cpuinfo:各进程使用CPU信息
    查看一段时间段内各个进程使用CPU的信息,包括user、kernel区分
  • dbinfo:各进程使用SQLite数据的信息
    查看各个进程使用数据库的状况,sql的执行时间等
  • diskstats:磁盘相关信息
    执行dumpsys diskstats
    结果:
Latency: 1ms [512B Data Write]
Data-Free: 8963580K / 11855028K total = 75% free
Cache-Free: 371304K / 380888K total = 97% free
System-Free: 299116K / 1889440K total = 15% free
  • dropbox:各进程的dropbox的日志信息
  • statusbar:状态栏相关的信息
  • usagestats:每个界面启动的时间
  • meminfo:各进程的内存使用状况
    执行dumpsys meminfo查看的每个进程占用PSS的列表
    如果后面接pid或者包名就可以查看具体某个进程的内存详细状况
    执行dumpsys meminfo com.eg.android.AlipayGphone
    结果:
    支付宝的内存详情
  • package : 查看安装的信息
    主要就是获取AndroidManifest.xml里边的信息
  • window:键盘,窗口和它们的关系
  • wifi:WIFI的信息
    但是这个log太多了,看不明白
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容