有没有办法从终端或bash脚本关闭/终止“< app>意外退出”窗口?流程名称是什么?
(AppleScript自动化解决方案不可加入。)
答案 0 :(得分:3)
您可以通过以下方式禁用它:
defaults write com.apple.CrashReporter DialogType none
其他可能的值为developer
†(显示所有进程的堆栈跟踪)和crashreport
(默认值)。
这也意味着不会将任何条目写入Console.app。对话框本身由UserNotificationCenter
显示,可以通过以下方式禁用(以及许多其他通知):
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.UserNotificationCenter.plist
某些背景信息:
Mach具有异常端口的概念。每个线程/进程都有一个任务,进程和一个主机异常端口,在发生异常时会对其进行检查。 CrashReporter守护程序注册主机异常端口,并在没有其他信号处理程序运行时被激活。然后,它创建进程的堆栈跟踪和内存映射,并指示UserNotificationCenter
显示它。默认情况下,它仅对GUI应用程序执行此操作。
在High Sierra,我不得不使用defaults write com.apple.CrashReporter -string "developer"
答案 1 :(得分:1)
你可以:
killall UserNotificationCenter
它会杀死UserNotificationCenter
(它也打开了所有窗口),因此消息消失了。 (别担心,下一条错误消息将自动重新启动。)
但是,(恕我直言)最好在表单中使用osascript
命令:
osascript -l JavaScript <<EOS
... apple-scripting using JavaScript ...
EOS
恕我直言JavaScript(对于普通程序员)更容易理解为&#34;标准&#34; applescript
。
答案 2 :(得分:-1)
我不确定苹果是否有相同的核心实用程序,但我也来自unix世界。
例如:解决方案是通过名称查找进程ID。在我的linux系统上,我可以使用以下内容来查找进程ID ...
ps -aux
另一种变体是顶部。两者都提供了大量信息,我必须使用 grep 过滤代码。 之后我会通过 cut 或 sed 过滤字符串。 最后但并非最不重要的是 kill 命令。
脚本应该看起来像这样...
#!/bin/sh
PNAME="< app> quit unexpectedly"
ps -aux | grep "$PNAME" | cut -d" " -f2 | kill
我要永远不要使用这样的东西,而是手动执行 kill 。