pstree 命令查看 Android 用户进程树

Android 系统中没有提供 pstree 命令,需要借助 busybox 里的 pstree 命令。
busybox 下载地址(根据手机 CPU 架构来选择对应的版本):
https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch
我的手机 CPU 是 armv8l 架构,所以下载:
https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-armv8l

下载完成后

adb  push  busybox-armv8l  /system/bin/busybox
adb  shell
chmod  a+x  /system/bin/busybox
/system/bin/busybox  pstree

得到一个三星 Android 7.0 手机里的用户进程树如下:
(部分树叶为线程,其实在 Linux 中,同一进程中的不同线程就是由共享资源的不同进程来实现的;
只保留了 com.android.phone 和 com.tecent.mm 两个 App 进程,其他 App 进程已被删除)

init─┬─ATFWD-daemon─┬─2*[{ATFWD-daemon}]
     │              ├─{Binder:717_1}
     │              └─{Binder:717_2}
     ├─Binder:664_2───{Binder:664_1}
     ├─Binder:710_2─┬─{Binder:710_1}
     │              ├─{Binder:710_2}
     │              ├─{Binder:710_3}
     │              ├─{Binder:710_4}
     │              ├─{Binder:710_5}
     │              ├─{Binder:710_6}
     │              ├─{Binder:710_7}
     │              └─8*[{netd}]
     ├─adbd─┬─busybox
     │      ├─{->transport}
     │      ├─{<-transport}
     │      ├─{shell srvc 7800}
     │      └─{usb ffs open}
     ├─adsprpcd───2*[{adsprpcd}]
     ├─apaservice───{Binder:652_1}
     ├─audiod─┬─{AudioDaemon}
     │        └─{Binder:721_1}
     ├─audioserver─┬─{ApmAudio}
     │             ├─{ApmOutput}
     │             ├─{ApmTone}
     │             ├─{AudioOut_15}
     │             ├─{AudioOut_D}
     │             ├─{Binder:685_1}
     │             ├─{Binder:685_2}
     │             ├─{Binder:685_3}
     │             ├─{Binder:685_4}
     │             ├─{FastMixer}
     │             └─3*[{audioserver}]
     ├─auditd
     ├─cameraserver─┬─{Binder:687_1}
     │              ├─{Binder:687_2}
     │              └─{Binder:687_3}
     ├─connfwexe───{connfwexe}
     ├─ddexe───4*[{ddexe}]
     ├─debuggerd───debuggerd:sig
     ├─debuggerd64───debuggerd64:sig
     ├─drmserver─┬─{Binder:649_1}
     │           ├─{Binder:649_2}
     │           ├─{Binder:649_3}
     │           ├─{Binder:649_4}
     │           ├─{Binder:649_5}
     │           └─{Binder:649_6}
     ├─edmaudit
     ├─fingerprintd───{POSIX timer 0}
     ├─gatekeeperd
     ├─healthd
     ├─imsd─┬─{Binder:668_1}
     │      └─4*[{imsd}]
     ├─installd
     ├─ipacm─┬─{ipa driver ntfy}
     │       ├─{ipacm}
     │       └─{netlink socket}
     ├─ipacm-diag───{ipacm-diag}
     ├─jackservice───{Binder:653_1}
     ├─keystore
     ├─lmkd
     ├─loc_launcher─┬─lowi-server───4*[{lowi-server}]
     │              └─{loc_launcher}
     ├─logd─┬─{logd.control}
     │      ├─{logd.daemon}
     │      ├─{logd.reader}
     │      └─{logd.writer}
     ├─zygote64─┬─m.android.phone─┬─{Binder:2690_1}
     │          │                 ├─{Binder:2690_2}
     │          │                 ├─{Binder:2690_3}
     │          │                 ├─{Binder:2690_4}
     │          │                 ├─{Binder:2690_5}
     │          │                 ├─{Binder:2690_6}
     │          │                 ├─{Cat Icon Loader}
     │          │                 ├─{Cat Telephony s}
     │          │                 ├─2*[{CdmaInboundSmsH}]
     │          │                 ├─2*[{CdmaServiceCate}]
     │          │                 ├─2*[{CellBroadcastHa}]
     │          │                 ├─{ConnectivityThr}
     │          │                 ├─2*[{DcHandlerThread}]
     │          │                 ├─{FinalizerDaemon}
     │          │                 ├─{FinalizerWatchd}
     │          │                 ├─2*[{GsmCellBroadcas}]
     │          │                 ├─2*[{GsmInboundSmsHa}]
     │          │                 ├─{HeapTaskDaemon}
     │          │                 ├─{ImsAdaptorThrea}
     │          │                 ├─2*[{ImsModemReceive}]
     │          │                 ├─{ImsModemSender}
     │          │                 ├─{JDWP}
     │          │                 ├─{Jit thread pool}
     │          │                 ├─{Profile Saver}
     │          │                 ├─{RILReceiver0}
     │          │                 ├─{RILReceiver1}
     │          │                 ├─{RILSender0}
     │          │                 ├─{RILSender1}
     │          │                 ├─{ReferenceQueueD}
     │          │                 ├─{RenderThread}
     │          │                 ├─{RilMessageDecod}
     │          │                 ├─{Signal Catcher}
     │          │                 ├─2*[{Stk App Service}]
     │          │                 ├─{SyncHandler-0}
     │          │                 ├─{Thread-7}
     │          │                 ├─{emergencymodema}
     │          │                 ├─{ervice.Executor}
     │          │                 ├─{hwuiTask1}
     │          │                 ├─{hwuiTask2}
     │          │                 └─{pool-2-thread-1}
     │          ├─system_server─┬─3*[{ActivityManager}]
     │          │               ├─{AdaptiveDisplay}
     │          │               ├─{AlarmManager}
     │          │               ├─{AsyncQueryWorke}
     │          │               ├─{AudioService}
     │          │               ├─{AutoWifi}
     │          │               ├─{BarTender Handl}
     │          │               ├─{BatteryStats_wa}
     │          │               ├─{Binder:1512_10}
     │          │               ├─{Binder:1512_11}
     │          │               ├─{Binder:1512_1}
     │          │               ├─{Binder:1512_2}
     │          │               ├─{Binder:1512_3}
     │          │               ├─{Binder:1512_4}
     │          │               ├─{Binder:1512_5}
     │          │               ├─{Binder:1512_6}
     │          │               ├─{Binder:1512_7}
     │          │               ├─{Binder:1512_8}
     │          │               ├─{Binder:1512_9}
     │          │               ├─{Binder:1512_A}
     │          │               ├─{Binder:1512_B}
     │          │               ├─{Binder:1512_C}
     │          │               ├─{Binder:1512_D}
     │          │               ├─{Binder:1512_E}
     │          │               ├─{Binder:1512_F}
     │          │               ├─{CAEMgr}
     │          │               ├─{CAESHubEvtHler}
     │          │               ├─{CCM InternalHan}
     │          │               ├─{CallAudioModeSt}
     │          │               ├─2*[{CallbackHandler}]
     │          │               ├─{CameraService_p}
     │          │               ├─{CaptivePortalHa}
     │          │               ├─{CheckTouchThrea}
     │          │               ├─{ConnectivityMan}
     │          │               ├─{ConnectivitySer}
     │          │               ├─{ConnectivityThr}
     │          │               ├─{CpuTracker}
     │          │               ├─{CredentialManag}
     │          │               ├─{CryptdConnector}
     │          │               ├─{DLPManagerServi}
     │          │               ├─{DeviceRootKeySe}
     │          │               ├─{DirEncryptConne}
     │          │               ├─{DirEncryptServi}
     │          │               ├─{EMPackageHandle}
     │          │               ├─{EnterpriseParti}
     │          │               ├─{EthernetService}
     │          │               ├─{FgCheckThread}
     │          │               ├─{FileObserver}
     │          │               ├─{FinalizerDaemon}
     │          │               ├─{FinalizerWatchd}
     │          │               ├─{FirewallPolicyS}
     │          │               ├─{GNPProxy}
     │          │               ├─{GeofenceService}
     │          │               ├─{HS20StateMachin}
     │          │               ├─{HeapTaskDaemon}
     │          │               ├─{HongbaoModeServ}
     │          │               ├─{Hs20UtilityHand}
     │          │               ├─{InputDeviceLigh}
     │          │               ├─{InputDispatcher}
     │          │               ├─{InputReader}
     │          │               ├─{InternalHandler}
     │          │               ├─{IpManager.wlan0}
     │          │               ├─3*[{IzatServiceBase}]
     │          │               ├─{JDWP}
     │          │               ├─{KeyManagementUt}
     │          │               ├─{KiesUsbManager}
     │          │               ├─{KioskModeServic}
     │          │               ├─{KnoxCustomManag}
     │          │               ├─{KnoxVpnFirewall}
     │          │               ├─{KnoxVpnHandler}
     │          │               ├─{LBSSystemMonito}
     │          │               ├─{LazyTaskWriterT}
     │          │               ├─{LicenseLogServi}
     │          │               ├─2*[{LocTime}]
     │          │               ├─4*[{Loc_hal}]
     │          │               ├─{LocationManager}
     │          │               ├─{MARsDBThread}
     │          │               ├─{MARsUpdatePacka}
     │          │               ├─{MDMAppUsageHand}
     │          │               ├─{MdnieScenarioCo}
     │          │               ├─{MountService}
     │          │               ├─{NapHandler}
     │          │               ├─{NetdConnector}
     │          │               ├─{NetworkDatausag}
     │          │               ├─{NetworkMonitorN}
     │          │               ├─{NetworkPolicy}
     │          │               ├─{NetworkStatsObs}
     │          │               ├─{NetworkStatsThr}
     │          │               ├─{NetworkStats}
     │          │               ├─{NetworkTimeUpda}
     │          │               ├─{NotifierInSeper}
     │          │               ├─{NsdService}
     │          │               ├─{PKMService}
     │          │               ├─{PackageInstalle}
     │          │               ├─{PackageManager}
     │          │               ├─{PersonaManagerS}
     │          │               ├─{PersonaPolicyMa}
     │          │               ├─{PhotonicModulat}
     │          │               ├─{PmsDisplayThrea}
     │          │               ├─{PmsTraceDumper}
     │          │               ├─{PowerManagerSer}
     │          │               ├─{QualityResultHa}
     │          │               ├─{QualitySocketHa}
     │          │               ├─{ReferenceQueueD}
     │          │               ├─{RegisterInSeper}
     │          │               ├─{RenderThread}
     │          │               ├─{RollbackRefresh}
     │          │               ├─{SATServiceAt}
     │          │               ├─{SATServiceData}
     │          │               ├─{SEAMService}
     │          │               ├─{SLocationeServi}
     │          │               ├─{SPD}
     │          │               ├─{SSRM Handler Th}
     │          │               ├─{SdpLogService}
     │          │               ├─{SdpManagerServi}
     │          │               ├─{SensorEventAckR}
     │          │               ├─{SensorHubThread}
     │          │               ├─{SensorService}
     │          │               ├─{SettingsProvide}
     │          │               ├─{Signal Catcher}
     │          │               ├─{SoundPoolThread}
     │          │               ├─{SoundPool}
     │          │               ├─{SyncHandler-0}
     │          │               ├─{Tethering}
     │          │               ├─{Thread-12}
     │          │               ├─{Thread-16}
     │          │               ├─{Thread-17}
     │          │               ├─{Thread-19}
     │          │               ├─{Thread-21}
     │          │               ├─{Thread-7}
     │          │               ├─{Thread-9}
     │          │               ├─{TimaService}
     │          │               ├─{Timer-0}
     │          │               ├─{UEventObserver}
     │          │               ├─{UsbHostNotifica}
     │          │               ├─{UsbPortManager}
     │          │               ├─{UsbService host}
     │          │               ├─{VoldConnector}
     │          │               ├─{WWSMPatcherThre}
     │          │               ├─{WifiMaliciousHo}
     │          │               ├─{WifiP2pService}
     │          │               ├─{WifiRttService}
     │          │               ├─{WifiScanningSer}
     │          │               ├─{WifiService}
     │          │               ├─{WifiStateMachin}
     │          │               ├─{WifiWatchdogSta}
     │          │               ├─{android.bg}
     │          │               ├─{android.display}
     │          │               ├─{android.fg}
     │          │               ├─{android.io}
     │          │               ├─{android.ui}
     │          │               ├─{backup}
     │          │               ├─{batterystats-sy}
     │          │               ├─{context_aware}
     │          │               ├─{mDnsConnector}
     │          │               ├─{mSvcLEDThread}
     │          │               ├─{motion_recognit}
     │          │               ├─{notification-sq}
     │          │               ├─{packagescan-1}
     │          │               ├─{packagescan-2}
     │          │               ├─{packagescan-3}
     │          │               ├─{packagescan-4}
     │          │               ├─{packagescan-5}
     │          │               ├─{packagescan-6}
     │          │               ├─{ranker}
     │          │               ├─{roid.pacmanager}
     │          │               ├─{scontext}
     │          │               ├─{sensorThread}
     │          │               ├─2*[{system_server}]
     │          │               ├─{ulp_monitor}
     │          │               ├─{ulp_msg}
     │          │               ├─{uteStateMachine}
     │          │               └─{watchdog}
     │          ├─{FinalizerDaemon}
     │          ├─{FinalizerWatchd}
     │          ├─{HeapTaskDaemon}
     │          └─{ReferenceQueueD}
     ├─zygote─┬─com.tencent.mm─┬─{
   
   .mm_ANRWatchDog}
     │        │                ├─{Binder:5444_1}
     │        │                ├─{Binder:5444_2}
     │        │                ├─{Binder:5444_3}
     │        │                ├─{Binder:5444_4}
     │        │                ├─{Binder:5444_5}
     │        │                ├─{ConnectivityThr}
     │        │                ├─{FinalizerDaemon}
     │        │                ├─{FinalizerWatchd}
     │        │                ├─{HalleyTempTaskT}
     │        │                ├─{HeapTaskDaemon}
     │        │                ├─{HttpPlatformCon}
     │        │                ├─{InflateThread}
     │        │                ├─{JDWP}
     │        │                ├─{Jit thread pool}
     │        │                ├─14*[{MM_Thread_Pool_}]
     │        │                ├─{Profile Saver}
     │        │                ├─{ReferenceQueueD}
     │        │                ├─{Signal Catcher}
     │        │                ├─{Vending-HeavyWo}
     │        │                ├─{Vending-LogicTh}
     │        │                ├─2*[{
   
   com.tencent.mm}]
     │        │                ├─{default}
     │        │                ├─{mars::cdn}
     │        │                └─{pool-1-thread-1}
     │        ├─{FinalizerDaemon}
     │        ├─{FinalizerWatchd}
     │        ├─{HeapTaskDaemon}
     │        └─{ReferenceQueueD}
     ├─mcDriverDaemon─┬─{McDaemon.Server}
     │                └─{mcDriverDaemon}
     ├─mediacodec─┬─{Binder:705_1}
     │            ├─{Binder:705_2}
     │            └─{Binder:705_3}
     ├─mediadrmserver───{Binder:707_1}
     ├─mediaextractor─┬─{Binder:708_1}
     │                ├─{Binder:708_2}
     │                └─{Binder:708_3}
     ├─mediaserver─┬─{Binder:709_1}
     │             ├─{Binder:709_2}
     │             ├─{Binder:709_3}
     │             └─{Binder:709_4}
     ├─mm-qcamera-daem─┬─20*[{CAM_imgTh}]
     │                 ├─{POSIX timer 0}
     │                 └─10*[{mm-qcamera-daem}]
     ├─msm_irqbalance
     ├─netmgrd───8*[{netmgrd}]
     ├─otp_server───{Binder:2539_1}
     ├─perfd─┬─{POSIX timer 0}
     │       └─3*[{perfd}]
     ├─perfprofd
     ├─pm-proxy─┬─{Binder:497_1}
     │          ├─{Binder:497_2}
     │          └─{Binder:497_3}
     ├─pm-service─┬─{Binder:477_1}
     │            ├─{Binder:477_2}
     │            ├─{POSIX timer 0}
     │            └─{pm-service}
     ├─qmuxd───3*[{qmuxd}]
     ├─qseecomd───qseecomd───9*[{qseecomd}]
     ├─rild─┬─{Binder:692_1}
     │      ├─{Binder:692_2}
     │      └─15*[{rild}]
     ├─rild───15*[{rild}]
     ├─rmt_storage───4*[{rmt_storage}]
     ├─sdp_cryptod───{sdp_cryptod}
     ├─secure_storage_
     ├─sensorhubservic─┬─{Binder:651_1}
     │                 ├─{Binder:651_2}
     │                 ├─{Binder:651_3}
     │                 └─{SensorHubServic}
     ├─servicemanager
     ├─smdexe───3*[{smdexe}]
     ├─ss_conn_daemon───5*[{ss_conn_daemon}]
     ├─surfaceflinger─┬─{Binder:482_1}
     │                ├─{Binder:482_2}
     │                ├─{Binder:482_3}
     │                ├─{Binder:482_4}
     │                ├─{Binder:482_5}
     │                ├─{DispSync}
     │                ├─{EventControl}
     │                ├─2*[{EventThread}]
     │                ├─{HWC_UeventThrea}
     │                ├─{POSIX timer 0}
     │                ├─{POSIX timer 1}
     │                ├─{SDM_EventThread}
     │                ├─{VSyncThread}
     │                └─{surfaceflinger}
     ├─tftp_server
     ├─thermal-engine───7*[{thermal-engine}]
     ├─time_daemon───5*[{time_daemon}]
     ├─tlc_server───{Binder:2505_1}
     ├─tlc_server───{Binder:2506_1}
     ├─ueventd
     ├─vold─┬─sdcard
     │      └─8*[{vold}]
     └─wcnss_service

注:Binder:717_1 中的 717 为进程号,1为线程号,参见源码:

String8 ProcessState::makeBinderThreadName() {  
    int32_t s = android_atomic_add(1, &mThreadPoolSeq);  
    pid_t pid = getpid();    //获取进程pid  
    String8 name;  
    name.appendFormat("Binder:%d_%X", pid, s);  //为binder命名  
    return name;  
}  

另:
/system/bin/busybox pstree -p 0 命令可以查看 Android 系统的所有进程树(内核进程+用户进程)
/system/bin/busybox pstree -p 2 命令可以查看 Android 系统的内核进程树

pstree 命令使用说明如下:

Usage: pstree [-p] [PID|USER]

Display process tree, optionally start from USER or PID

        -p      Show pids

猜你喜欢

转载自blog.csdn.net/hegan2010/article/details/79352594