Technical Note/MOBILE PERFORMANCE

안드로이드 시스템 분석에 사용할만한 shell 명령을 알아보자.


시스템 기본 정보: 하드웨어, 커널 등


cat /proc/version : 커널 버전

cat /proc/cpuinfo : 프로세서 정보. CPU 타입, 모델, 제조사 등

cat /proc/meminfo : 메모리 정보. 실제 메모리 및 가상 메모리

cat /proc/devices : 현재 커널에 설정되어 있는 장치 목록

mount : 마운트된 모든 장치 정보

df : 하드디스크 사용량

cat /proc/filesystems : 커널에 설정되어 있는 파일시스템 목록

cat /proc/swaps : 스왑 파티션의 크기와 사용량

cat /proc/interrupts : 장치가 사용중인 인터럽트(IRQ) 목록 표시

cat /proc/ioports : 현재 사용중인 Input/Output 포트

cat /proc/loadavg : 시스템의 평균부하량

cat /proc/partitions : 파티션 정보

cat /proc/uptime : 시스템이 얼마나 살아있었는지.

cat /proc/stat : 시스템 상태에 관한 다양한 정보. CPU 사용통계, 부팅이후 page fault 발생횟수 등

cat /proc/zoneinfo : ZONEINFO ?

dmesg : 시스템 부팅시 나왔던 메시지

ps : 실행중인 프로세스 정보

ps -p -t : 프로세스와 쓰레드 목록

set 또는 printenv : 환경설정값 출력


시스템 리소스 사용 현황


vmstat : 시스템의 리소스 상황 모니터링. CPU, I/O, 메모리 등

cat /proc/diskstats : 디스크 utilization과 throuthput. 즉 디스크 IO 현황

top : 시스템의 프로세스 상황 모니터링. 프로세스별 CPU 사용량, 메모리와 스왑 사용량 등

procrank : 프로세스별 메모리(VSS,RSS,USS, PSS)

dumpsys meminfo [PID] : 해당 프로세스의 메모리 상세 정보

cat /proc/[PID]/stat : 해당 프로세스에 대한 정보. 시작시간, 상태, CPU 사용량 등

cat /proc/[PID]/maps : 해당 프로세스의 메모리 맵 정보

cat /proc/vmstat : 버추얼 메모리 통계?

librank : 라이브러리별 메모리 사용량?


네트워크 관련


cat /proc/net/netlink : 네트워크 정보

netcfg : 네트워크 인터페이스와 IP주소 목록

netstat : 네트워크 연결상태 확인

nc : 네트워크용 cat 명령어(netcat)

ifconfig : 네트워크 인터페이스 설정 정보. 장치명을 파라미터로 받음. IP 주소, 서브넷마스크 등

tcpdump : 실시간 패킷 모니터링

iftop : 네트워크를 위한 top

route : 해당 호스트까지 연결하는 중간 경로 정보인 라우팅 테이블 표시

ping : 원격 호스트와의 연결 테스트

cat /proc/net/route : Routes


안드로이드 제공


logcat : 로그캣 보기

pm : package manager의 약자. 패키지/permission/instrumentation/feature 목록, 패키지 설치/제거 등

am : activity manager의 약자. 액티비티 시작, Intent 브로드캐스팅, Instrumentation 시작, profiling 시작/중지 등

service : 안드로이드 서비스 목록 표시, 서비스에 명령 전달

monkey : 애플리케이션에 랜덤 이벤트 발생시킴. 사용자 이벤트, 시스템 이벤트의 무작위 발행

cat /data/anr/traces.txt : VM TRACES (쓰레드 덤프)

cat /proc/binder/proc/[PID] : 바인더 프로세스 상태

cat /proc/binder/xxx : 바인더 관련 정보(xxx는 transactions, transaction_log, failed_transaction_log, stats 등)

cat /data/system/packages.xml : 설치된 패키지 세팅 정보

setprop : system property 세팅

getprop : 세팅된 system property 목록 출력



종합 리포트

dumpsys [service]: app/service 상태정보 덤프. 서비스별로 추가 파라미터 받을 수 있음

dumpstate : device 상태정보 덤프(cpu,mem,ps 등). 상태정보를 추출하는 여러 명령어들의 조합으로 구성

dumpcrash : 애플리케이션이 crash될 때의 상태정보 덤프?

bugreport : logcat+dumpsys+dumpstate


그밖에...

그밖의 안드로이드 shell 명령어는 /system/bin 및 /system/xbin을 뒤져보면 많이 나온다. 이제 남은 일은 찾아낸 명령어의 사용법, 출력결과를 어떻게 해석할지, 어떤 상황에서 이들을 활용할지 사례조사, 그리고 직접 활용해보는 것일게다.




* 참조


http://www.cyworld.com/polox94ii/312644


http://tkhwang.pe.kr/archives/65


http://en.androidwiki.com/wiki/ADB_Shell_Command_Reference


http://elinux.org/Using_Bootchart_on_Android


http://elenoa.tistory.com/52


게시일: 2014. 1. 27.


How to View Device Specification android With Adb Command


"ADB COMMAND"


@echo off

echo Waiting for device 

adb wait-for-device 

echo Manufacturer 

adb shell getprop ro.product.manufacturer 

echo Name adb shell getprop ro.product.name 

echo Model adb shell getprop ro.product.model 

echo Android version 

adb shell getprop ro.build.version.release 

echo Platform 

adb shell getprop ro.board.platform 

echo CPU 

adb shell getprop ro.product.cpu.abi 

echo cpu abi2 

adb shell getprop.ro.product.cpu.abi2 

echo Description 

adb shell getprop ro.build.description 

echo Fingerprint 

adb shell getprop ro.build.fingerprint 

echo Flexversion 

adb shell getprop ro.gsm.flexversion 

echo locale language 

adb shell getporp ro.product.locale.language 

echo locale region 

adb shell getprop ro.product.locale.region 

echo wifi.channels 

adb shell getprop ro.wifi.channels 

echo board platform 

adb shell getprop.ro.board.platform 

echo board 

adb shell getprop ro.product.board 

echo display id echo serial number 

adb get-serialno 

echo imei 

abb shell getprop gsm.baseband.imei 

adb shell getprop ro.build.display.id 

ceho version incremental 

adb shell getprop ro.build.version.incremental 

echo version sdk 

adb shell getprop ro.build.version.sdk 

echo version codename 

adb shell getprop ro.build.version.codename 

echo version release 

adb shell getprop ro.build.version.release 

echo date 

adb shell getprop ro.build.date 

echo type 

adb shell getprop ro.build.type 

echo user 

adb shell getprop ro.build.user 

adb kill-server

pause


More Stuf About Android : http://www.adbcommand.com/