2017-02-21 65 views
0

有沒有辦法關閉/殺死「<應用程序>意外退出」窗口從終端或bash腳本?什麼是進程名稱?關閉「<app>意外退出」窗口從終端/ bash

(AppleScript的自動化解決方案並不acceptible。)

+0

多一點信息可以幫助。你的意思是應用程序正在運行,你想殺死它?如果它已經意外退出,那麼它已經不存在了,還有什麼可以殺死的?!...或者你的意思是它掛起了,即凍結,並且你想發送一個SIGKILL?! – Arash

+0

蘋果電腦有什麼問題? (我的意思是使用'osascript -e'告訴應用程序「UserNotificationCenter」.... etc ....「)的shell腳本) – jm666

回答

1

您可以:

killall UserNotificationCenter 

它會殺死UserNotificationCenter(一個它的所有打開的窗口太多),因此,該消息消失。 (別擔心,接下來的錯誤信息會自動開始再次。)

但是,(恕我直言)它是更好的形式使用osascript命令:

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

恕我直言,JavaScript是更容易(作爲一個普通的程序員)理解爲「標準」applescript

+0

這個答案確實需要實際關閉所有窗口的腳本代碼。 –

-1

我不知道,如果蘋果竟相同的核心事業,但我來自Unix世界了。例如:

例如:解決方法是通過名稱查找進程ID。我的Linux系統上,我可以使用下面找到一個進程ID ...

ps -aux 

的其他變化將是頂部。都提供了大量的信息,我必須用grep來過濾代碼。 之後,我會通過cutsed過濾字符串。 最後但並非最不重要的是命令。

腳本應該看起來有些像這樣...

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

但被警告,該腳本可以讓巨大的破壞,如果ü不知道如何使用它。

要hornest我絕不會用一些這樣的,而不是將執行殺手動 ..

3

你可以禁用它通過出現在首位:

defaults write com.apple.CrashReporter DialogType none 

其他可能的值developer(顯示所有進程的堆棧跟蹤)和crashreport(默認值)。

這也意味着沒有條目將被寫入Console.app。對話框本身是由UserNotificationCenter顯示並可以被禁用(與許多其他通知一起)由:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.UserNotificationCenter.plist 

一些背景:

馬赫有例外端口的概念。每個線程/進程都有一個任務,進程和一個主機異常端口,當發生異常時將對其進行檢查。 CrashReporter守護程序註冊主機異常端口,並在沒有其他信號處理程序運行時被激活。然後它會創建該進程的堆棧跟蹤和內存映射,並指示UserNotificationCenter顯示它。默認情況下,它只對GUI應用程序這樣做。


在高塞拉利昂,我不得不使用defaults write com.apple.CrashReporter -string "developer"