Как отключить это сообщение: «диск не был извлечен должным образом»?

Есть ли способ отключить сообщение «диск не был извлечен должным образом»?

Я использую KVM, и мне нужно переключаться между двумя системами и иметь карту памяти, которая находится в KVM. Проблема в том, что очень раздражает получать сообщение каждый раз, когда я переключаюсь с одного компьютера на другой. Я знаю, размонтировать могу (и наверное должен), но я постоянно переключаюсь, поэтому размонтировать неудобно, а на флешке нет ничего чувствительного.

Извините, у меня нет ответа. Однако имейте в виду, что это сообщение должно напомнить вам, что данные хранятся в памяти и еще не записаны на диск. Что особенно важно при частом переключении.
Я делал это давно, и я никогда ничего не терял. Я не говорю, что этого не произойдет, но я готов рискнуть.
Хорошо, я должен спросить: кто-нибудь знает, почему мы получили три почти идентичных вопроса в течение 10 часов — этот, 6090 и 6108 (и да, последние два были закрыты как дубликаты).
@Dori Сейчас время после Рождества, так что новые Mac или камеры с SD-картами :) Хотя я хотел бы отметить, что мой вопрос конкретно касался кэша записи, о чем обычно и предупреждают (игнорируя такие проблемы, как Symlinks/ открыть системные файлы на диске)
Я слышал, что вы говорите, что вы предпочли бы рискнуть потерять карту памяти, я просто подумал, что должен сообщить вам, что это действительно случается; Я нашел этот форум, потому что я не извлек карту памяти перед отключением и не смог получить доступ к 1,8 ГБ фильмов, которые я только что снял. К счастью, на этот раз Дисковая утилита смогла это исправить.
@cate,@chrisparker2000: я преобразовала ваши ответы в комментарии. Я понимаю вашу позицию, но в своем вопросе ОП заявляет, что его не волнует потеря данных. Так что в этом случае посты на самом деле являются комментариями, а не ответами на вопрос.
@chrisparker2000: Я никогда не слышал, чтобы диск физически уничтожался, если его не извлечь. Откуда вы берете эту информацию? Как карта памяти становится настолько «испорченной», что ее нельзя переформатировать?
@dermike ЗА ИСКЛЮЧЕНИЕМ ... проблема в том ... В большинстве случаев риск того, что это произойдет, буквально нулевой: в настоящее время Apple выводит сообщение во ВСЕХ случаях, включая те, в которых с момента вставки диска не было записи. Вы не можете повредить данные, если у вас нет данных!
@DerMike сообщение появляется всегда, даже если диск (например, заблокированная SD-карта) доступен только для чтения и/или не было внесено никаких изменений. Это не означает, что на диске есть незаписанные данные, это просто означает, что на нем могут быть незаписанные данные.
У меня та же проблема, НО когда вы программируете устройство CircuitPython, оно автоматически монтируется как CIRCUITPY. При перезагрузке устройства (очень частое явление во время разработки) Mac OS выскакивает «Диск не извлечен должным образом». Когда у меня их было около сорока, мне приходилось очищать их по одному!

Ответы (7)

обновлен новый лучший метод

Как упоминал Рассел в комментариях:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.DiskArbitration.diskarbitrationd.plist DADisableEjectNotification -bool YES && sudo pkill diskarbitrationd
Будет ли он продолжать выгружаться после перезагрузки моего Mac?
Выгрузка списка launchctl сохраняется после перезапуска, так что я так думаю. Тем не менее, я почти никогда не перезагружаюсь, поэтому еще не проверял!
(Я перезагрузился, и он сохранился нормально :)
У этого решения есть отрицательный побочный эффект: оно также будет скрывать всплывающие окна «xy-приложение хочет получить доступ к вашим контактам». Чтобы вернуть его:sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.UserNotificationCenter.plist
Да это очень опасно. Это, скорее всего, помешает вам получать уведомления от системы. В 2011 году уведомления не имели большого значения, но сегодня, в 2015 году, они есть.
Есть ли какой-нибудь рекомендуемый способ сделать это, чтобы он не сохранялся?
Я думаю, было бы лучше, если бы вы просто отключили уведомление USB-устройства вместо отключения всего уведомления?!sudo rm /usr/libexec/USBAgent
У меня недостаточно репутации, чтобы ответить самому себе, надеюсь, это кому-то поможет: sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.DiskArbitration.diskarbitrationd.plist DADisableEjectNotification -bool YES && sudo pkill diskarbitrationd
Для меня (в Монтерее), sudo pkill diskarbitrationdкажется, убивает его навсегда или, по крайней мере, делает так, чтобы диски не монтировались, пока я не перезагружусь. Использование sudo launchctl kickstart -k system/com.apple.diskarbitrationd, похоже, не имеет этой проблемы.
Хотя это сработало для меня, это кажется тяжелым. Это также остановило работу некоторых приложений синхронизации, поскольку они больше не видели подключенных устройств (один пример: Playdate Simulator для загрузки игр на устройство через USB).

Этот яблочный скрипт закроет их для вас. Вставьте его в редактор сценариев, а затем сохраните как приложение. Затем предоставьте доступ к этому приложению в (Системные настройки> Безопасность и конфиденциальность> Доступность). Затем вы можете использовать приложение, такое как ControlPlane https://www.controlplaneapp.com/ , чтобы запускать приложение после пробуждения, автоматически закрывая их все! ** Примечание. Вам также потребуется предоставить доступ к ControlPlane.

tell application "System Events"
tell process "NotificationCenter"
    set numwins to (count windows)
    repeat with i from numwins to 1 by -1
        tell window i
            set temp to value of static text 1
        end tell
        if temp contains "Disk Not Ejected Properly" then
            click button "Close" of window i
        end if
    end repeat
end tell
end tell
Красиво, я предпочитаю это полному отключению Центра уведомлений.
Спасибо. В Catalina я добавил рабочий процесс в Automator, затем выбрал AppleScript из списка возможных действий и вставил в ваш сценарий, и он сработал, хотя мне пришлось запускать его несколько раз.
Спасибо огромное. Я могу лечь спать сегодня вечером, чувствуя, что этот мир стал лучше, чем был в начале дня.
Есть ли альтернатива ControlPane теперь, когда он устарел и больше не поддерживается?
Этот больше не работает (проверено с OS 12.4)

Конечно, это не элегантный ответ, но вы можете отключить UserNotificationCenter.app, найденный в /system/library/coreservices, — замените его другим приложением или файлом с тем же именем. Это предотвратит появление любых предупреждений (в том числе о том, что ваш диск заполнен), так что следите за этим, но, по моему опыту, это делает то, что вы ищете.

На самом деле я сделал это со своим Mac давным-давно и забыл об этом, пока вы не задали вопрос. Кредит Macpadawon на http://macosx.com/forums/mac-os-x-system-mac-software/297194-disable-device-removal-message.html для ответа - там же, где я нашел свой ответ пару лет назад.

Ух ты. Хорошо поймал. Я, конечно, не стал бы делать это со своей собственной системой, но приятно знать, что это можно сделать. Я полагаю, что приложение может быть заменено пустым файлом.
Я сделал это на трех разных компьютерах Mac без проблем, хотя большую часть времени я также просто размонтировал что-то.
По крайней мере, вы не заметили никаких проблем, верно? Извините, не удержался. :-)
Ссылка мертва. Также не рекомендуется заменять системные приложения.

Работает с macOS Big Sur.

Этот AppleScript отклоняет все уведомления о неправильном извлечении диска.

tell application "System Events"
    tell process "Notification Center"
        set group_index to 1
        repeat
            try
                set the_window to group group_index of UI element 1 of scroll area 1 of window "Notification Center"
                set notification to value of static text of the_window
                set notification_title to item 1 of notification
                if notification_title = "DISK NOT EJECTED PROPERLY" then
                    set the_actions to actions of the_window
                    repeat with the_action in the_actions
                        if description of the_action is "Close" then
                            tell the_window
                                perform the_action
                            end tell
                        end if
                    end repeat
                    # Wait for the notification to disappear so that the indexes of the remaining notifications are updated accordingly.
                    delay 0.25
                    # Do not increment `group_index` because all remaining notifications have their index decremented by 1 since this notification was dismissed. We do not need to worry about the notifications before the one just dismissed because we already know that they are not notifications about disk ejection.
                else
                    # This is not a disk ejection notification, so skip it and look at the next notification.
                    set group_index to group_index + 1
                end if
            on error error_message
                # There are no more notifications to process.
                exit repeat
            end try
        end repeat
    end tell
end tell

Вы можете запускать этот AppleScript каждые 10 секунд с помощью PLIST запуска ниже. Не забудьте изменить его для работы с вашей собственной установкой. Затем поместите PLIST ~/Library/LaunchAgentsи запустите launchctl load ~/Library/LaunchAgents/file.plist(заменив file.plistимя файла) в Терминале.

Что действительно здорово в launchd, так это то, что если задание не запускается из-за того, что компьютер спит (например, когда ваш ноутбук закрыт), launchd запустит задание, как только компьютер снова проснется (и если задание должно было выполняться несколько раз, когда компьютер находился в спящем режиме, несколько запусков будут объединены в один запуск после пробуждения). Это действительно полезно при отключении закрытого ноутбука от домашней док-станции с подключенным жестким диском, а затем при использовании ноутбука на ходу.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.YourName.DismissNotifications</string>
    <key>ProgramArguments</key>
    <array>
      <string>osascript</string>
      <string>/path/to/script</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>10</integer>
  </dict>
</plist>

Это можно сделать, изменив тип этого системного уведомления с оповещения на баннер . К сожалению, это невозможно сделать с помощью графического интерфейса, но можно сделать с помощью скрипта. суть

Суть сценария состоит в том, чтобы очистить бит предупреждения & ~0b00010000и установить баннер и измененные биты | 0b01001000в _SYSTEM_CENTER_:com.apple.DiskArbitration.DiskArbitrationAgentфайле .~/Library/Preferences/com.apple.ncprefs.plist

После этой модификации уведомления по-прежнему будут появляться, но через несколько секунд исчезнут сами по себе.

Взято из блога adafruit и успешно протестировано на macOS 12.6 Monterey.

ваш ответ здесь. Просто замените файл на файл, упомянутый в конце этой статьи, и работа будет выполнена. Ни в Сьерре, ни в Высокой Сьерре ничего не изменилось.

Отключение предупреждений об удалении устройств OS-X в Yosemite

ОБНОВИТЬ!

МОЙ БОГ! QuantumG - гений! Вот хак ( и я имею в виду реальный лайфхак ) для отключения только этого надоедливого сообщения и сохранения остальной системы уведомлений нетронутой...

http://quantumg.blogspot.com/2015/04/disabling-os-x-device-removal-warnings.html

Предупреждение : это профессиональный совет, а не для слабонервных! Это требует взлома системных файлов Mac OSX и может привести к поломке вашего Mac.

Отредактировано для ясности.

Проблема с флешками или другими USB-накопителями заключается в следующем; всякий раз, когда вы записываете данные на диск... ЛЮБОЙ диск в вашей системе, данные сначала записываются в буфер в памяти. Позже, когда компьютер доберется до него, он сбросит буферы на устройство (жесткий диск, SSD или любое USB-устройство). Это может произойти мгновенно (по крайней мере, для нас, простых смертных), а может занять несколько секунд. Возможная задержка означает, что если вы извлечете USB-устройство до того, как буферы будут очищены, вы можете получить поврежденный диск или набор поврежденных файлов на диске.

Если вы только читаете с устройства, то НЕТ НУЖНОСТИ очищать буферы записи перед тем, как вы дергаете содержимое своего сердца, потому что они пусты и их не нужно сбрасывать на устройство.

Итак ... Раздражающее предупреждение MAC OS X, скорее всего, НЕ актуально. Это важно делать только в том случае, если вы недавно выполняли запись на устройство и не дали ему достаточно времени для очистки буферов (макс. несколько секунд). НИКОГДА не нужно ждать очистки буферов, если вы читаете только с USB-устройства.

Поэтому Apple НЕОБХОДИМО предоставить способ отключения отдельных сообщений для опытных пользователей. Не относитесь ко всем как к n00b, на которых нельзя положиться, чтобы знать, как работает их компьютер.

А те, кто жалуется, что я не прав, и что есть способ отключить сообщения, отключив ВСЮ ПОДСИСТЕМУ УВЕДОМЛЕНИЯ, просто не правы. Отключение всей подсистемы уведомлений — неприемлемое решение, так же как извлечение аккумулятора из мобильного телефона — НЕ приемлемое решение, если вы получаете слишком много телемаркетинговых звонков. Подсистема уведомлений важна, и ее не следует отключать только потому, что OP считает одно из множества сообщений раздражающим.

Это проблема, которая может быть адекватно решена только в том случае, если Apple предоставит пользователям возможность отказаться от определенных сообщений.

Итак, я не уверен, что эта бессвязность действительно квалифицируется как ответ на вопрос ... однако уже был предоставлен ответ, который делает именно то, что вы бессвязно делаете, не может быть сделано - сообщения можно отключить. Однако, поскольку это не попытка дать какой-либо ответ на вопрос, я собираюсь пометить это для удаления.
@Charlie74 Charlie74 Это попытка подчеркнуть свою точку зрения, поэтому я ее не удаляю. Ближе к концу я отредактирую невнятную болтовню. Если OP хочет внести ясность, не стесняйтесь дать положительное объяснение того, почему OS X сертифицирована POSIX - en.wikipedia.org/wiki/POSIX#POSIX-сертифицирована , а не основана на POSIX.
@ Charlie74 Я уточнил свой ответ, но, чтобы защитить себя, я никогда не говорил, что это невозможно. Я просто предположил, что отключение подсистемы уведомлений, чтобы остановить одну из, возможно, сотен проблем, о которых вашему Mac может потребоваться уведомить вас, не является приемлемым решением. Это лишь немногим лучше, чем «Прекратите использовать свой Mac, и это глупое сообщение больше не будет вас беспокоить». Только Apple может предложить приемлемое решение, а они пока этого не сделали.
Этот подход не работает из-за необходимости подписывать двоичные файлы. Отключение подписи кода было бы хуже, чем отключение системы уведомлений.
Я согласен с Эдуардом. Так что все еще НЕ ЖИЗНЕСПОСОБНОЕ РЕШЕНИЕ.