您好,登錄后才能下訂單哦!
這篇文章主要介紹了Arthas中shell如何交互,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Arthas(阿爾薩斯)在bootstrap過程中,會在目標java進程內部啟動一個shell server。shell server將在特定端口監聽telnet/http協議,解析并執行用戶發送的命令。
shell相關主要類圖如下:
ShellServerImpl - shell server實例,負責監聽用戶請求。
TelnetTermServer - telnet協議對應的監聽/解析器。
ShellImpl - 對于每一個連入的用戶,都會創建一個對應的ShellImpl實例用來管理該用戶的session。
JobControllerImpl - 解析命令行輸入,創建為對應的Job。
TermImpl - 對應每個交互終端。
JobImpl/ProcessImpl - 對于實際運行command的封裝。ProcessImpl封裝進程相關信息,包含各種信號量回調handler(interrupt/suspend/resume/background/foreground等等)。
AnnotatedCommandImpl - 對于運行command的引用。
Shell相關的工作流程如下圖:
TelnetTermServer在接受到用戶請求之后,會創建一個ShellImpl來跟蹤用戶session,同時觸發TermImpl上的readline操作,等待用戶輸入請求。
當用戶輸入命令之后,會被ShellLineHandler捕捉到,繼而通過ShellImpl/JobControllerImpl創建對應的ProcessImpl/JobImpl,以及上下文封裝類CommandProcessImpl,和command引用類AnnotatedCommandImpl。最后通過JobImpl.run來運行實際的command。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Arthas中shell如何交互”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。