Python 如何跟踪特定的终端命令?
例如,在Openstack中,我输入命令并使用ImageMyImage和Flavor1启动一个实例Python 如何跟踪特定的终端命令?,python,ubuntu,openstack,openstack-nova,Python,Ubuntu,Openstack,Openstack Nova,例如,在Openstack中,我输入命令并使用ImageMyImage和Flavor1启动一个实例 nova boot --image myimage --flavor 1 server1 我如何才能真正跟踪这个命令,并获得详细信息,比如执行哪些函数,因为代码是用python编写的,在执行命令时输入哪些文件等等 对不起,我是一个linux noob,我正在设法追踪一些电话。而不是通过浏览所有的文件并这样做 有一种简单的方法可以做到这一点吗?如果可以获得进程ID,可以使用strace 下面是一
nova boot --image myimage --flavor 1 server1
我如何才能真正跟踪这个命令,并获得详细信息,比如执行哪些函数,因为代码是用python编写的,在执行命令时输入哪些文件等等
对不起,我是一个linux noob,我正在设法追踪一些电话。而不是通过浏览所有的文件并这样做
有一种简单的方法可以做到这一点吗?如果可以获得进程ID,可以使用
strace
下面是一个链接,解释了如何:
如果可以获取进程ID,则可以使用
strace
下面是一个链接,解释了如何:
如果要跟踪常规Python程序,请查看 但是,我认为在您提供的示例中,跟踪对于理解OpenStack正在做什么没有帮助:
nova boot --image myimage --flavor 1 server1
OpenStack不是作为单个Python程序实现的。它被实现为Python程序的集合,这些程序作为Linux服务在不同的进程中运行,通常这些进程分布在多台机器上
nova
程序只是一个小型客户端程序,它通过HTTP对OpenStack端点发出请求。当您执行上述请求时,将涉及以下服务。请注意,大多数OpenStack“服务”实际上是由多个Linux“服务”(也称为守护进程)实现的。这些是在执行nova引导时涉及的OpenStack服务和Linux服务/守护进程
- 身份服务(keystone)
- 基石
- 计算服务(nova)
- 诺瓦api
- 新星调度器
- 新星计算机
- nova网络(如果未使用新网络服务(quantum))
- 图像服务(概览)
- 浏览api
- 浏览注册表
请注意,如果涉及新的网络服务(quantum),这里将涉及更多的服务
OpenStack使用两种机制进行进程间通信:
- HTTP(使用RESTAPI)用于跨OpenStack项目边界进行通信(例如,计算服务和图像服务之间的通信)
- 基于AMQP的消息队列(通常是RabbitMQ,但可以是Qpid或ZeroMQ),用于在单个OpenStack项目中跨服务进行通信(例如,nova api和nova compute之间的通信)
这些服务还通过数据库共享信息,但如果您对跟踪控制线程感兴趣,这并不重要
对于您使用nova boot
给出的示例,请注意跨服务发生的所有交互:
nova客户端通过HTTP对标识服务(keystone)发出请求,传递用户名和密码并获取令牌
nova客户端通过HTTP对计算服务(nova api)发出请求,以访问
nova api通过消息队列向nova scheduler发出运行实例的请求
nova scheduler选择一个计算主机,并通过消息队列向该主机上的nova compute发出请求,以启动一个新的虚拟机实例
nova compute通过消息队列向nova network发出请求,为新实例进行网络配置
nova compute通过HTTP针对虚拟机映像文件的映像服务(glance api)发出请求
Gliance api通过HTTP对Gliance注册表发出请求,以从映像后端检索文件
如果您想要生成一个包含所有相关OpenStack代码的跟踪,那么您必须跟踪所涉及的每个服务
我建议只阅读代码,而不是尝试进行自动跟踪。您还可以查看日志文件,因为它们包含大量调试信息。查看最近发布的日志文件,了解有关如何读取日志文件的一些指导。如果要跟踪常规Python程序,请查看
但是,我认为在您提供的示例中,跟踪对于理解OpenStack正在做什么没有帮助:
nova boot --image myimage --flavor 1 server1
OpenStack不是作为单个Python程序实现的。它被实现为Python程序的集合,这些程序作为Linux服务在不同的进程中运行,通常这些进程分布在多台机器上
nova
程序只是一个小型客户端程序,它通过HTTP对OpenStack端点发出请求。当您执行上述请求时,将涉及以下服务。请注意,大多数OpenStack“服务”实际上是由多个Linux“服务”(也称为守护进程)实现的。这些是在执行nova引导时涉及的OpenStack服务和Linux服务/守护进程
- 身份服务(keystone)
- 基石
- 计算服务(nova)
- 诺瓦api
- 新星调度器
- 新星计算机
- nova网络(如果未使用新网络服务(quantum))
- 图像服务(概览)
- 浏览api
- 浏览注册表
请注意,如果涉及新的网络服务(quantum),这里将涉及更多的服务
OpenStack使用两种机制进行进程间通信:
- HTTP(使用RESTAPI)用于跨OpenStack项目边界进行通信(例如,计算服务和图像服务之间的通信)
- 基于AMQP的消息队列(通常是RabbitMQ,但可以是Qpid或ZeroMQ),用于在单个OpenStack项目中跨服务进行通信(例如,nova api和nova compute之间的通信)
这些服务还通过数据库共享信息,但如果您对跟踪控制线程感兴趣,这并不重要
对于您使用