2013-02-21 73 views
0

我正在使用adb命令來管理android手機上的進程。如何使用adb在Android設備上啓動進程

我能夠通過命令

adb kill "PID" (PID is the process ID) 

殺死特定的流程和過程就會被殺死。

但是,當我使用命令

adb start "PID" 

啓動它它不啓動該進程。

我希望啓動的過程在/ system/bin文件夾中,我不知道該過程的包或活動名稱是什麼。我所知道的只是過程的「PID」和「用戶」。

是否有任何命令啓動Android設備上的特定進程?

+0

這是一個本地或dalvik應用程序?你能給出實際的名字嗎? – 2013-02-21 16:53:03

+0

這個應用程序位於/ system/bin文件夾中,這是一個本機應用程序。 – DeveloperLove 2013-02-22 06:51:01

回答

2

一旦你殺死了對應於PID的進程,你怎麼能再次啓動它?

您可以改爲嘗試從adb這種方式啓動應用: -

adb shell 
am start -n com.package.name/com.package.name.ActivityName 

或者你可以直接這樣使用:

adb shell am start -n com.package.name/com.package.name.ActivityName 
+0

我要開始的過程是在/ system/bin文件夾中,我不知道該軟件包的名稱.. 我所知道的是該進程的PID和用戶 – DeveloperLove 2013-02-21 09:54:53

+0

您可以使用PID '[this](http://stackoverflow.com/a/8543401/2024761)的方式。之後,你可以做我上面提出的建議。 – SudoRahul 2013-02-21 10:04:31

1

的本機應用沒有活動。他們就是這樣 - 本地的二進制文件。

如果您只知道進程'數字ID - 那麼ps <PID>命令將在NAME列中顯示進程二進制文件的名稱。就像這樣:

# ps 407 
USER  PID PPID VSIZE RSS  WCHAN PC   NAME 
root  407 1  4540 272 ffffffff 000160a4 S /sbin/adbd 

如果PPID價值1 - 這意味着它已被系統init和較有可能的應用程序是一個「服務」應用程序啓動。要控制它,你需要找到服務的名稱,然後使用stop <service>start <service>

要找到服務的名稱來看grep ^service /init*rc | grep <binary name>服務的名稱將在第二列(即「adbd」):

# grep ^service /init*rc | grep /sbin/adbd 
/init.rc:service adbd /sbin/adbd 

因此,要適當控制這個程序 - 你應該使用stop adbdstart adbd

0

你說你知道你的二進制文件在/ system/bin中,所以我假設你也知道這個二進制文件的名字。 如果你不這樣做,那命令將幫助你找出:

ps PID 

要啓動一個二進制文件(如:正常運行時間),你只需要在shell中鍵入它的名稱:

adb shell 
uptime 

或者一個命令

adb shell uptime 

但如果你的二進制文件不是在$ PATH中列出的目錄之一,你必須鍵入完整路徑它

adb shell /system/bin/uptime 

,您可以檢查與$ PATH:

adb shell echo $PATH 
相關問題