問題
adb shell start
和adb shell stop
究竟幹什麼?'adb shell start/stop'是做什麼的?
說明
我認爲他們稱之爲/system/bin/start
和/system/bin/stop
。但是這兩個可執行文件並沒有給出他們所做的任何線索。當在真實設備上測試時,我發現合子進程已啓動並停止。因此,這兩個命令似乎控制Android運行時(對應於下圖中的黃色和藍色部分)。
但啓動什麼確切的進程/服務 /停止這兩個命令?
adb shell start
和adb shell stop
究竟幹什麼?'adb shell start/stop'是做什麼的?
我認爲他們稱之爲/system/bin/start
和/system/bin/stop
。但是這兩個可執行文件並沒有給出他們所做的任何線索。當在真實設備上測試時,我發現合子進程已啓動並停止。因此,這兩個命令似乎控制Android運行時(對應於下圖中的黃色和藍色部分)。
但啓動什麼確切的進程/服務 /停止這兩個命令?
運行該設備上
grep ^service /init*rc
直到最近,大多數官方Android版本不包括' grep' –
使用'adb pull'將所有這些文件複製到您的工作站上,然後從那裏運行grep。 –
@ChrisStratton:編譯/下載busybox並運行busybox grep。 – pevik
基本上,你的所有的Android服務將重新啓動;那些創建並註冊在SystemServer.java
。這在「合子上下文」中被稱爲。所以是的,Zygote停止了。
所有在ServiceManager
在Android中註冊的服務都將在ServiceManager
中被刪除。要重新啓動它們,請執行adb shell start
。
另請注意,SystemServer
由Zygote啓動,因此init.rc
表明如果Zygote已停止,那麼即使SystemServer
也必須停止。即使SurfaceFlinger
死亡,因爲它從SystemServer
開始,但本地。
我一直在想在Android上做什麼「停止」。從某人那裏學習到「停止」會停止AP由SurfaceFlinger渲染。
嘗試下面的命令。執行該命令,等待幾秒鐘,然後在Android上執行「停止」。該命令不斷打印增加的數字並創建.txt文件。所以也許它只會停止Android部分而Linux部分仍然活躍。只是FYI。
busybox sh -c 'i=0;while [ $i -ne 100 ]; do echo $i >> count.txt; sleep 1; i=$(($i + 1)); echo $i; touch "$i.txt"; done;'
來源:https://android.googlesource.com/platform/system/core/+/brillo-m8-release/toolbox/start_stop.cpp –