APP開發(fā)在前面的文章中詳細(xì)介紹了如何跟蹤數(shù)據(jù)路由,本文深圳APP開發(fā)公司主要介紹我們在APP開發(fā)時(shí)如何查看程序的依賴庫--LDDEBUG。運(yùn)行某個(gè)程序有時(shí)會(huì)報(bào)以下的錯(cuò)誤。
errorwhileloadingsharedlibraries:xxxx.s:,.2:
cann:,topensharedobjectfile:N_,suchfile_.rdire:tory
這是由于查找不到所依賴的庫造成的,但從錯(cuò)誤信息上看,沒法確定所缺的庫的具體路徑,這就讓開發(fā)人員無從查起。對于這種依賴的庫找不到的情況,在Linux中可以通過設(shè)置LDDEBUG環(huán)境變量來獲得更多的信息。LD_DEBUG是glibe中l(wèi)oader為了方便自身調(diào)試而設(shè)置的個(gè)環(huán)境變量。通過設(shè)置這個(gè)環(huán)境變量,可以方便地看到loader的加載過程
LD_DEBUG的詳細(xì)用法如圖4.18所示。
APP開發(fā)實(shí)操示意圖4.18LDDEBUG的詳細(xì)用法
下面以Nginx的扁動(dòng)為例看下Nrginx啟動(dòng)所需要加載的庫如圖4.19所示。
APP開發(fā)進(jìn)程管理利器--superlvlsor
supervlsor是用Pvthon語言編寫的基于Liuux操作系統(tǒng)的款進(jìn)程管理工具,用于監(jiān)控進(jìn)程的運(yùn)行,當(dāng)發(fā)現(xiàn)進(jìn)程閃退時(shí)能自動(dòng)重啟比如開發(fā)人員想在后臺(tái)運(yùn)行一個(gè)從消息隊(duì)列中取出消息再發(fā)送到郵件的腳本sendmail.sh,常常會(huì)使用&在程序結(jié)尾讓程序自動(dòng)運(yùn)行,并且在退出登錄后也繼續(xù)執(zhí)行,采用如下的命令。
nohupsh/data/sendrnail.sh2>&1>>/data/logs/sendmail.log&
當(dāng)要把要把運(yùn)sh腳本的進(jìn)fikill掉,則需要通過下面兩步,如圖4.19所示。
上面管理進(jìn)程的方法有如下的缺點(diǎn)
·不知道進(jìn)程的狀態(tài),不知道進(jìn)程在運(yùn)行的過程中是否終止
·每次重啟進(jìn)程,kill進(jìn)程都需要煩瑣的步驟。
·如果需要運(yùn)行大量的守護(hù)進(jìn)程,用這種方法不方便管理。
使用supervlsor管理進(jìn)程有如下的優(yōu)點(diǎn)
·能自動(dòng)啟動(dòng)配置好的進(jìn)程,并監(jiān)控每個(gè)進(jìn)程的狀態(tài),例如進(jìn)程是運(yùn)行著還是停止的
·監(jiān)控的進(jìn)程如果因?yàn)楦鞣N原因閃退,能自動(dòng)重啟改進(jìn)程。
安裝supervlsor很簡單,使用如下的命令
yum install supervisord
supervisord安裝完成后,在/usr/bin/目錄下增加了兩個(gè)命令
·supervisord:supervisor的服務(wù)器端,啟動(dòng)supervlsor就是運(yùn)行這個(gè)命令。
·supervisorctl:通過該命令和supervisord進(jìn)行交換。
啟動(dòng)supervlsor.先為其創(chuàng)建配置文件/etc/supervisord.conf,內(nèi)容如下。
在上面的文件中,為了更好地管理進(jìn)程監(jiān)控腳本,把進(jìn)程監(jiān)控腳本放在/etc/supervisordconf.d/。例如,為監(jiān)控運(yùn)行腳本/data/sendmail.sh,創(chuàng)建文件/etc/supervisord.conf.d/mail.conf.內(nèi)容如下。
運(yùn)行supervisord服務(wù)端程序
使用supervisorctl查看supervisor管理進(jìn)程的狀態(tài)

停止命名為mail的進(jìn)程

supervisor還包含了很多實(shí)用命令,可以通過幫助查看這些命令,如圖4-20所示

深圳APP開發(fā)博納網(wǎng)絡(luò)關(guān)于APP制作時(shí)如何處理如何查看程序LDDEBUG依賴庫的文章本文就介紹到這里,我們會(huì)在下期的相關(guān)文章中詳細(xì)介紹如何分析故障的實(shí)際操作經(jīng)驗(yàn)。