2017-04-05 62 views
0

我想在终端中打开xcode工作区,等待一段时间,然后关闭该工作区(xcode有一些隐藏的魔法,它在自动构建过程中需要这样做的项目上)。Mac终端打开命令 - 保存已打开应用程序的PID?

因此,一些喜欢 -

pid=`open proj.xcworkspace` 
sleep 30 
kill $pid 

由于多个xcode的项目可能在同时运行。我不能简单地杀死xcode,只是我开始的过程。

如何获取我在终端中打开的应用程序的PID?

+0

'open'不一定推出一个新的进程。如果应用程序已经运行,则现有进程只是发送一个事件,告诉它打开文档。 (你可以用'-n'选项来覆盖它,但并不是所有的应用程序都能很好地处理多个实例,我不希望Xcode能很好地处理它。)它看起来像Xcode的AppleScript接口支持你想要做的事情。在“工作空间文档”类的文档中甚至还有一个相关示例。 –

回答

-1

您可以通过$$找到当前的Process ID。您可以使用ps -C PROGRAMM_NAME -o pid=搜索Process IDs

[email protected]:~$ ps -C icedove -o pid= 
887 

[email protected]:~$ ps -C vlc -o pid= 
29405 

加...

这里是我的意思工作的例子...

#!/bin/bash 

i=0 
while [ "$i" -le 10 ] 
do 
    example.sh & 
    Pid[$i]=$(ps -C "example.sh" -o "pid=") 
    Pid[$i]=$(echo "${Pid[$i]}" | tail -n 1) 
    #echo "${Pid[$i]}" 
    i=$(($i +1)) 
done 

for PID in "${Pid[@]}" 
do 
    kill "$PID" 
done 
exit 0 
+0

我不需要当前的进程ID。我只想杀死许多可能实例中的一个实例。我认为这不会有帮助。 –

+0

你可能不需要'$$',但另一个例子应该满足你的需求。 – suleiman

+0

仍不确定。我有2个运行xcode的实例。我打开另一个xcode实例。如何关闭刚刚打开而不关闭其他实例的实例? –