2017-02-21 22 views
0

Есть ли способ закрыть/убить «< app> quit неожиданно» окно с терминала или скрипта bash? Каково название процесса?Закрыть «<app> quit неожиданно» окно с терминала/bash

(решения по автоматизации AppleScript не acceptible.)

+0

Немного больше информации может помочь. Вы имеете в виду, что приложение работает, и вы хотите его убить? Если он уже вышел неожиданно, тогда он ушел, что осталось убить?! ... ИЛИ вы имеете в виду, что он зависает, то есть зависает, и вы хотите отправить его «SIGKILL» ?! – Arash

+0

Что не так с applescript? (Я имею в виду сценарий оболочки, использующий 'osascript -e 'приложение-приложение« UserNotificationCenter ».... etc ....'') – jm666

ответ

1

Вы можете:

killall UserNotificationCenter 

Он будет убивать UserNotificationCenter (мысленные ВСЕ эти открытые окна тоже), поэтому сообщение исчезает. (Не волнуйтесь, следующее сообщение об ошибке начнет снова автоматически.)

Но (ИМХО) лучше использовать команду osascript в форме:

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

ИМХО JavaScript гораздо проще понимать (для обычного программиста) как «стандарт» applescript.

+0

Этот ответ действительно нуждается в коде сценариев, который фактически закрывает все эти окна. –

-1

Я не уверен, если яблоко еси те же основные утилиты, но я пришел из мира Unix тоже.

например: решение должно найти идентификатор процесса по имени. на моей системе Linux можно использовать следующую команду, чтобы найти идентификатор процесса ...

ps -aux 

Другой вариации будет сверху. оба дают тонну информации, и я должен отфильтровать код с grep. После этого я буду фильтровать строку через cut или sed. Последнее, но не менее важное: kill команда.

скрипт должен выглядеть некоторые, как это ...

#!/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, чтобы показать ее. По умолчанию он делает это только для приложений с графическим интерфейсом.


На High Sierra, я должен был использовать defaults write com.apple.CrashReporter -string "developer"