2017-04-05 63 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實例。如何關閉剛剛打開而不關閉其他實例的實例? –