关 ” 意外退出“来自终端/ bash的窗口

问题描述 投票:0回答:3

有没有办法从终端或bash脚本关闭/杀死“<app>意外退出”窗口?流程名称是什么?

(AppleScript自动化解决方案是不可接受的。)

bash macos macos-sierra
3个回答
1
投票

您可以:

killall UserNotificationCenter

它会杀死UserNotificationCenter(也是它打开的窗户),所以消息消失了。 (别担心,下一条错误消息将自动重新启动。)

但是,(恕我直言)最好在表格中使用osascript命令:

osascript -l JavaScript <<EOS
... apple-scripting using JavaScript ...
EOS

恕我直言JavaScript(对于一个普通的程序员)更容易理解为“标准”applescript


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
投票

我不确定苹果是否具有相同的核心功能,但我也来自unix世界。

例如:解决方案是通过名称查找进程ID。在我的linux系统上,我可以使用以下内容来查找进程ID ...

ps -aux

另一种变化是顶部。两者都提供了大量信息,我必须用grep过滤代码。之后我会通过cut或sed过滤字符串。最后但并非最不重要的是kill命令。

脚本应该看起来像这样......

#!/bin/sh
PNAME="< app> quit unexpectedly"
ps -aux | grep "$PNAME" | cut -d" " -f2 | kill

but be warned, this script can make huge damage if u dont know how to use it.

说实话,我永远不会使用这样的,而是手动执行kill ..

© www.soinside.com 2019 - 2024. All rights reserved.