Python 如何跟踪特定的终端命令?

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 下面是一

例如,在Openstack中,我输入命令并使用ImageMyImage和Flavor1启动一个实例

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之间的通信)
    这些服务还通过数据库共享信息,但如果您对跟踪控制线程感兴趣,这并不重要

    对于您使用