簡介
本文檔介紹如何排除或調試IOX應用程式在啟動過程中遇到問題或意外停止。
背景資訊
開發IOX應用程式時,最好的方法是在另一個平台和/或沙盒上開發它。在您所需的IOX應用程式經過測試並準備就緒後,可以將其打包並部署到支援IOX的裝置上。在某些情況下,部署未按預期工作,應用程式可能意外停止或甚至無法啟動。
和IOX VM/容器/應用程式的預設行為是,目標命令終止後立即停止。因此,如果發生意外情況,則難以排除故障,因為所有非永續性資訊都將消失。另一個後果是,當您希望使用IOX應用程式的功能進行播放/實驗時,會非常耗時。啟動另一個應用/目標/命令/指令碼至少需要更改程式包。yaml、生成新程式包、停用當前應用程式、使用新程式包升級、重新啟用應用程式並啟動它。
IOX應用程式終止的基本資訊
本地Manager和IOX客戶端沒有提供有關應用程式/容器/虛擬機器停止的原因的很多資訊。幸運的是,watchDog.log會跟蹤此情況,並且還會為您提供應用程式的最後退出/返回代碼。雖然這可能並不總是對你有幫助,但在許多情況下,它會引導你找到你要找的原因。
要使用IOX客戶端獲取watchDog.log,請執行以下操作:
[jedepuyd@db ~]$ ioxclient app logs tail iox_docker_test watchDog.log 10
Currently active profile : default
Command Name: application-logs-tail
App/Service : iox_docker_test, Logfile : watchDog.log, viewing last 10 lines
APP END TIME:1498207460
Time taken by App : 0 minutes and 0 seconds.
Got the ip address - 10.197.215.227 for interface eth0
All interfaces got the ips
APP START TIME:1498207536
App iox_docker_test started with PID : 11
Monitoring this process now
App iox_docker_test completed with exit code: 127
APP END TIME:1498207536
Time taken by App : 0 minutes and 0 seconds.
要使用本地管理器獲取日誌:
- 登入到本地管理器。
- 如圖所示,按一下start deactivate manage,即可管理相關應用
- 選擇Logs頁籤,如下圖所示:
- 下載watchDog.log
例如,此應用程式意外終止,您可以在watchDog.log中看到此情況
APP START TIME:1498207536
App iox_docker_test started with PID : 11
Monitoring this process now
App iox_docker_test completed with exit code: 127
APP END TIME:1498207536
如上面的日誌代碼片斷所示,退出代碼為127。這是一個保留的返回代碼,這意味著:未找到命令,這表示將faulty命令指定為目標或啟動的指令碼嘗試呼叫faulty命令。
最常見的保留退出代碼:
RC |
含義 |
意見 |
1 |
常規錯誤的目錄 |
其他錯誤,如「除以零」和其他不允許的操作 |
2 |
誤用殼層 |
缺少關鍵字或命令,或許可權問題(以及二進位制檔案比較失敗的差異返回代碼)。 |
126 |
無法執行命令 |
許可權問題或命令不是執行檔 |
127 |
未找到命令 |
$PATH或拼寫錯誤可能存在的問題 |
128 |
退出引數無效(RC>255) |
exit僅使用0 - 255範圍內的整數引數 |
128+n |
致命錯誤訊號「n」 |
退出代碼返回137(128 + 9)->應用錯誤訊號為9 |
130 |
以Ctrl+c終止 |
Control-C是致命錯誤訊號2,(130 = 128 + 2,參見上文) |
255 |
退出狀態超出範圍(RC>255) |
exit僅使用0 - 255範圍內的整數引數 |
有關這方面的更多資訊,請訪問:http://tldp.org/LDP/abs/html/exitcodes.html
防止IOX容器在應用程式/目標終止時停止
上面主題提供有關如何對出現故障的應用程式進行故障排除的資訊,但它不會阻止IOX應用程式停止。這意味著與故障排除相關的最可能的重要資訊已消失,因為所有非永續性資料都已不存在。
如上所述,另一個使用案例是播放已啟動的IOX應用程式的功能,或靈活使用命令和引數。
要防止IOX應用程式在應用程式端終止,可以將-debug傳遞到activate命令:
[jedepuyd@db ~]$ ioxclient app activate -debug on testdebug
Currently active profile : default
Command Name: application-activate
App testdebug is Activated
[jedepuyd@db ~]$ ioxclient app start testdebug
Currently active profile : default
Command Name: application-start
App testdebug is Started
[jedepuyd@db ~]$ ioxclient app console testdebug
Currently active profile : default
Command Name: application-console
Console setup is complete..
Running command : [ssh -p 2222 -i testdebug.pem appconsole@10.48.43.197]
/ #
在上方範例中,在啟用並以 — debug on標誌開始後,即使應用已終止,您仍可以存取容器。您可以在此處啟動其他命令,並可以在運行應用程式的環境中自由試驗應用程式。這樣可以節省大量時間來解決應用程式問題或設定正確的目標和引數。