[root@ce66c469-721d-41bf-9f6d-73187d2c6410 log]# ps -ef | grep scal
root 2518 1 0 16:26 ? 00:00:00 /opt/scalarizr/embedded/bin/python /opt/scalarizr/bin/scalr-upd-client --daemonize --pid-file /var/run/scalr-upd-client.pid --log-file /var/log/scal rizr_update.log
root 2596 1 0 16:26 ? 00:00:01 /opt/scalarizr/embedded/bin/python /usr/bin/scalarizr -z -c /etc/scalr
root 2661 2462 0 16:32 pts/0 00:00:00 grep --color=auto scal
[root@ce66c469-721d-41bf-9f6d-73187d2c6410 log]# which scalr-upd-client
/usr/bin/scalr-upd-client
[root@ce66c469-721d-41bf-9f6d-73187d2c6410 log]# vim /usr/bin/scalr-upd-client
vim 打开文件后 遇到entry_point 无法继续追踪
#!/opt/scalarizr/embedded/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'scalarizr==4.9.2','console_scripts','scalr-upd-client'
__requires__ = 'scalarizr==4.9.2'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('scalarizr==4.9.2', 'console_scripts', 'scalr-upd-client')()
)
"/usr/bin/scalr-upd-client" 10L, 344C 1,1 All
加入断点追踪
if __name__ == '__main__':
import pdb
pdb.set_trace()
load_entry_point('scalarizr==4.9.2', 'console_scripts', 'scalr-upd-client')()
然后运行ps 中的命令 去掉deamonize进入调试模式,所有(Pdb)后面的都是需要输入的部分
[root@ce66c469-721d-41bf-9f6d-73187d2c6410 log]# /opt/scalarizr/embedded/bin/python /opt/scalarizr/bin/scalr-upd-client --pid-file /var/run/scalr-upd-client.pid --log-file /var/log/scal rizr_update.log
> /opt/scalarizr/bin/scalr-upd-client(10)<module>()
-> load_entry_point('scalarizr==4.9.2', 'console_scripts', 'scalr-upd-client')()
(Pdb) s
--Call--
> /opt/scalarizr/embedded/lib/python2.7/site-packages/setuptools-18.0.1-py2.7.egg/pkg_resources/__init__.py(556)load_entry_point()
-> def load_entry_point(dist, group, name):
(Pdb) s
> /opt/scalarizr/embedded/lib/python2.7/site-packages/setuptools-18.0.1-py2.7.egg/pkg_resources/__init__.py(558)load_entry_point()
-> return get_distribution(dist).load_entry_point(group, name)
(Pdb) s
--Call--
> /opt/scalarizr/embedded/lib/python2.7/site-packages/setuptools-18.0.1-py2.7.egg/pkg_resources/__init__.py(546)get_distribution()
-> def get_distribution(dist):
(Pdb) r
--Return--
> /opt/scalarizr/embedded/lib/python2.7/site-packages/setuptools-18.0.1-py2.7.egg/pkg_resources/__init__.py(554)get_distribution()->scalariz...y2.7.egg)
-> return dist
(Pdb) p(dist._provider.egg_info)
'/opt/scalarizr/embedded/lib/python2.7/site-packages/scalarizr-4.9.2-py2.7.egg/EGG-INFO'
在过程中返回了dist,然后读取它的egg_info,可以看到所在路径。
[root@314a4202-26e0-4adc-a745-d2e690459a37 ~]# vim /opt/scalarizr/embedded/lib/python2.7/site-packages/scalarizr-4.9.2-py2.7.egg/EGG-INFO/entry_points.txt
vim打开该文件
[console_scripts]
scalarizr = scalarizr.app:main
scalr-upd-client = scalarizr.updclient.app:main
szradm = scalarizr.adm.app:main
~
<calarizr-4.9.2-py2.7.egg/EGG-INFO/entry_points.txt" 5L, 130C 1,1 All
因为要找scalr-upd-client
所以去找 scalarizr.updclient.app:main
函数,也在刚才的文件夹下。
[root@314a4202-26e0-4adc-a745-d2e690459a37 ~]# cd /opt/scalarizr/embedded/lib/python2.7/site-packages/scalarizr-4.9.2-py2.7.egg/scalarizr/
[root@314a4202-26e0-4adc-a745-d2e690459a37 scalarizr]# ls
adm cacert.pem __init__.pyc queryenv.pyc storage2
api config.py libs rpc.py updclient
app.py config.pyc linux rpc.pyc util
app.pyc exceptions.py messaging scripts version
bollard.py exceptions.pyc node.py service.py
bollard.pyc externals node.pyc service.pyc
bus.py handlers platform services
bus.pyc __init__.py queryenv.py storage
[root@314a4202-26e0-4adc-a745-d2e690459a37 scalarizr]# cd updclient
[root@314a4202-26e0-4adc-a745-d2e690459a37 updclient]# ls
api.py app.py __init__.py pkgmgr.py
api.pyc app.pyc __init__.pyc pkgmgr.pyc
[root@314a4202-26e0-4adc-a745-d2e690459a37 updclient]# vim app.py
文件绝对路径为 /opt/scalarizr/embedded/lib/python2.7/site-packages/scalarizr-4.9.2-py2.7.egg/scalarizr/updclient/app.py
用vim打开,找到main函数。
def main():
if linux.os.windows_family \
and not ('--make-status-file' in sys.argv or '--get-system-id' in sys.argv):
win32serviceutil.HandleCommandLine(WindowsService)
else:
svs = UpdClient()
try:
svs.serve_forever()
except KeyboardInterrupt:
pass
# svs = UpdClient()
# try:
# svs.serve_forever()
# except KeyboardInterrupt:
# svs.stop()