【问题标题】:How can I find out the pid of a running equinox instance, is there a pid file?如何找出正在运行的 Equinox 实例的 pid,是否有 pid 文件?
【发布时间】:2011-10-29 14:02:20
【问题描述】:

如何找出正在运行的 Equinox 实例的 pid,是否有某个 pid 文件,或者它是否可以配置放置 pid 文件的位置?

更新:说清楚,我有一堆实例在运行,它们的配置大致相同,所以任何只寻找 equinox 的用户都不知道哪个实例是哪个

【问题讨论】:

    标签: java linux process osgi equinox


    【解决方案1】:

    不,Equinox 不会创建 PID 文件或报告其 PID。

    您可以编写一个包来为您执行此操作,但请注意,Java 程序没有检索其 PID 的标准方法(因为某些目标操作系统甚至没有“PID”的概念)。请参阅this post 了解一些想法。

    【讨论】:

      【解决方案2】:

      只需从 CLI 执行以下命令:

      ps aux | grep equinox
      

      [编辑] Equinox 是否绑定到某个端口? 如果是这样,对于多个实例,您可以根据绑定的端口识别您感兴趣的实例:

      sudo netstat -npa |grep equinox
      

      【讨论】:

      • 这对我没有帮助,因为有几个实例正在运行,用户一眼看不到哪个实例是哪个。
      • 这是个好主意,但我宁愿有一个可以指向用户的 pid 文件。
      • 那么如何在同一台机器上启动多个实例呢?如果您使用不同的启动脚本,则应使用“ps aux”,因为它包含已执行命令的全名。如果您使用相同的脚本,并且神奇地Equinox 检测到新实例绑定到哪个端口,您应该使用'netstat'。我没有看到任何其他选择。
      • 与其说我自己无法找出哪个实例是哪个,而是实际管理员立即知道他必须杀死哪个实例以防它不工作了。对于我们运行的其他程序,我们为每个程序都有一个 pid 文件,但对 equinox 没有。因此,如果有办法告诉 Equinox 将其/一个 pid 文件放在同一目录中,我很高兴。
      【解决方案3】:
      $ pidof equinox
      

      来自手册页:

      PIDOF(8) Linux 系统管理员手册 PIDOF(8)

      名称 pidof -- 查找正在运行的程序的进程 ID。

      概要 pidof [-s] [-c] [-x] [-o omitpid] [-o omitpid..] 程序 [程序..]

      描述 Pidof 查找指定程序的进程 ID (pid)。它打印 那些 id 在标准输出上。这个程序在一些使用的系统上 在运行级别更改脚本中,尤其是当系统具有 System-V 像rc结构。在这种情况下,这些脚本位于 /etc/rc?.d,在哪里?是运行级别。如果系统具有启停- daemon (8) 程序应该被使用。

      选项

      -s Single shot - 这指示程序只返回一个 pid。

      -c 仅返回以相同根目录运行的进程 ID 目录。对于非 root 用户,此选项将被忽略,因为他们 将无法检查进程的当前根目录 他们不拥有。

      -x 脚本 - 这会导致程序也返回进程 运行命名脚本的 shell 的 ID。

      -o 省略号 告诉 pidof 忽略具有该进程 ID 的进程。特别的 pid %PPID 可以用来命名pidof的父进程 程序,也就是调用 shell 或 shell 脚本。

      退出状态

      0 至少找到一个具有请求名称的程序。

      1 未找到具有请求名称的程序。

      【讨论】:

      • 这对我没有帮助,1.) pidof 没有安装,2.) 我不知道哪个进程是哪个。
      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 2014-03-06
      • 2010-09-24
      • 2019-01-03
      相关资源
      最近更新 更多