如何在OSX上使用`open`命令获取应用程序的进程ID(PID)?

时间:2014-08-19 17:29:20

标签: macos terminal

我已经在OSX命令行上通过open命令启动了一个应用程序,如下所示:

open -a "/Applications/Adobe After Effects CC/Adobe After Effects CC.app"

我想获取已启动应用程序的进程ID。有没有办法在OSX上可靠地做到这一点?似乎open没有返回任何内容,所以我不确定我是否可以将其结果导入类似ps的内容来执行grep操作。我想也许,因为应用程序是通过终端启动的,我知道哪个应用程序是frontmost,但我怀疑该解决方案的可靠性。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

执行open -a后,可以执行ps命令。在ps命令的输出上执行grep会提供有关进程ID的信息。

ps aux | grep -v grep |grep -i <application name> | awk '{print $2;}'

下面给出的一个给出了该过程所用的时间。

ps aux -o etime,command | grep -v grep |grep -i <application name> | awk '{print $2, $12,$13}'

我们可以比较经过的时间来了解最近推出的pid的pid。

答案 1 :(得分:0)

这几天,pgrep -n $APPLICATION_NAME似乎是实现此目的的最简单方法。在手册页中:

-n    Select only the newest (most recently started) of the matching processes.
-o    Select only the oldest (least recently started) of the matching processes.