使用Apple脚本通过PID查找和比较过程路径

时间:2017-08-21 06:08:12

标签: macos applescript

我正在使用Apple Script按名称查找进程PID,例如......

set appName to "KKK"

tell application "System Events"
     set processPID to (unix id of processes whose name is appName)
end tell

使用这个脚本,我可以知道名称为" KKK"的所有进程的PID。

但我在这里有一个问题。

例如,有三个" KKK"过程," / FolderA / KKK"," FolderB / KKK"," FolderC / KKK"

我想杀死" / FolderA / KKK"的过程,所以我需要知道属于哪个PID" / FolderA / KKK"。

运行我的脚本之后,我可以获得三个PID,我可以在Apple Script中实际做些什么来区分哪个PID是我想要的? (也许是通过PID获取进程路径?)

谢谢

2 个答案:

答案 0 :(得分:0)

这是检查name的示例,而不是path检查应用程序的Messages.app

set appPath to "/Applications/Messages.app"

tell application "System Events"
    set processPID to (unix id of 1st process whose POSIX path of application file is appPath)
end tell

答案 1 :(得分:0)

也可以使用以下方法完成:

do shell script "kill -9 $(ps -x | awk '/[F]olderA\\/KKK/{print $1}')"

如果应用程序未运行且无需检查或陷阱,您还可以在末尾添加; exit 0以获取错误:

do shell script "kill -9 $(ps -x | awk '/[F]olderA\\/KKK/{print $1}'); exit 0"