ADB를 사용하여 현재 안드로이드 디바이스에서 실행 중인 프로세스의 ID(PID)를 확인할 수 있고, 또한 프로세스에 생성된 쓰레드의 ID(TID)를 확인할 수 있습니다.

1. 실행 중인 프로세스 ID 확인

adb shell ps -ef 명령어는 현재 실행 중인 모든 프로세스의 상태를 출력합니다. 왼쪽 두번째의 숫자는 PID를 의미합니다.

$ adb shell ps -ef
UID            PID  PPID C STIME TTY          TIME CMD
root             1     0 27 07:53:08 ?    00:00:03 init second_stage
root             2     0 0 07:53:08 ?     00:00:00 [kthreadd]
root             3     2 0 07:53:08 ?     00:00:00 [rcu_gp]
root             4     2 0 07:53:08 ?     00:00:00 [slub_flushwq]
root             5     2 0 07:53:08 ?     00:00:00 [netns]
root             6     2 0 07:53:08 ?     00:00:00 [kworker/0:0-slub_flushwq]
root             7     2 0 07:53:08 ?     00:00:00 [kworker/0:0H-kblockd]
root             8     2 1 07:53:08 ?     00:00:00 [kworker/u8:0-loop4]
root             9     2 0 07:53:08 ?     00:00:00 [mm_percpu_wq]
root            10     2 0 07:53:08 ?     00:00:00 [kworker/u8:1-loop20]
root            11     2 0 07:53:08 ?     00:00:00 [rcu_tasks_kthread]
root            12     2 0 07:53:08 ?     00:00:00 [rcu_tasks_trace_kthread]
root            13     2 0 07:53:08 ?     00:00:00 [ksoftirqd/0]
root            14     2 1 07:53:08 ?     00:00:00 [rcu_preempt]
root            15     2 0 07:53:08 ?     00:00:00 [rcub/0]
root            16     2 0 07:53:08 ?     00:00:00 [rcu_exp_gp_kthread_worker]
root            17     2 0 07:53:08 ?     00:00:00 [rcu_exp_par_gp_kthread_worker]
root            18     2 0 07:53:08 ?     00:00:00 [migration/0]
root            19     2 0 07:53:08 ?     00:00:00 [kworker/0:1-events]
root            20     2 0 07:53:08 ?     00:00:00 [cpuhp/0]
root            21     2 0 07:53:08 ?     00:00:00 [cpuhp/1]
root            22     2 2 07:53:08 ?     00:00:00 [migration/1]
root            23     2 0 07:53:08 ?     00:00:00 [ksoftirqd/1]

Help 명령어를 확인해보면, 사용할 수 있는 옵션과 어떤 의미인지 알 수 있습니다. -ef는 모든 프로세스의 모든 정보를 출력하는 의미였습니다.

$ adb shell ps --help
Toybox 0.8.9-android multicall binary (see toybox --help)

usage: ps [-AadefLlnwZ] [-gG GROUP,] [-k FIELD,] [-o FIELD,] [-p PID,] [-t TTY,] [-uU USER,]

List processes.

Which processes to show (-gGuUpPt selections may be comma separated lists):

-A  All					-a  Has terminal not session leader
-d  All but session leaders		-e  Synonym for -A
-g  In GROUPs				-G  In real GROUPs (before sgid)
-p  PIDs (--pid)			-P  Parent PIDs (--ppid)
-s  In session IDs			-t  Attached to selected TTYs
-T  Show threads also			-u  Owned by selected USERs
-U  Real USERs (before suid)

Output modifiers:

-k  Sort FIELDs (-FIELD to reverse)	-M  Measure/pad future field widths
-n  Show numeric USER and GROUP		-w  Wide output (don't truncate fields)

Which FIELDs to show. (-o HELP for list, default = -o PID,TTY,TIME,CMD)

-f  Full listing (-o USER:12=UID,PID,PPID,C,STIME,TTY,TIME,ARGS=CMD)
-l  Long listing (-o F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD)
-o  Output FIELDs instead of defaults, each with optional :size and =title
-O  Add FIELDS to defaults
-Z  Include LABEL

2. 쓰레드 ID(TID) 확인

특정 PID에 생성된 스레드 ID를(TID) 확인하려면, 아래와 같이 adb shell ps -T <PID>를 입력하면 해당 PID의 TID를 모두 출력합니다.

아래의 경우, PID 470이 갖고 있는 모든 TID 리스트를 출력합니다.

$ adb shell ps -T 470
USER           PID   TID  PPID        VSZ    RSS WCHAN            ADDR S CMD            
radio          470   470     1   11246944   3332 0                   0 S libgoldfish-ril
radio          470   517     1   11246944   3332 0                   0 S libgoldfish-ril
radio          470   518     1   11246944   3332 0                   0 S libgoldfish-ril
radio          470   519     1   11246944   3332 0                   0 S libgoldfish-ril
radio          470   520     1   11246944   3332 0                   0 S libgoldfish-ril