[Android] ADB로 프로세스/쓰레드 ID 확인 방법
January 30, 2024
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