我已经在OSX命令行上通过open
命令启动了一个应用程序,如下所示:
open -a "/Applications/Adobe After Effects CC/Adobe After Effects CC.app"
我想获取已启动应用程序的进程ID。有没有办法在OSX上可靠地做到这一点?似乎open
没有返回任何内容,所以我不确定我是否可以将其结果导入类似ps
的内容来执行grep
操作。我想也许,因为应用程序是通过终端启动的,我知道哪个应用程序是frontmost
,但我怀疑该解决方案的可靠性。有什么想法吗?
答案 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.