Что такое coreduetd?

17

Начиная с Yosemite и в каждой более поздней операционной системе OS X / macOS запускает coreduetd из / usr / libexec / coreduetd с идентификатором пакета com.apple.coreduetd.osx в фоновом режиме.

  • Что именно делает этот процесс?
  • На каком оборудовании это работает (т.е. поддерживается ли его функциональность)?
  • Это можно отключить?
  • Как это можно отключить?
  • Должен ли он быть отключен?
  • Каковы (потенциальные) побочные эффекты его отключения (зависимости)?

Этот вопрос следует понимать не как проблему YX, а как попытку в конечном итоге добавить в список канонических вопросов.

LаngLаngС
источник
Мы должны поговорить об этом в « Спросите другую мету» - это также канонический вопрос, который мы хотим закрыть как «слишком широкий» и «слишком вики» - мы не хотим поощрять вопросы, в которых отсутствует практический вопрос, и мы конечно же, я не хочу писать книгу о «внутренних системах MacOS» по одной главе за раз и одному демону за раз. Я воздержусь от закрытия с этого момента - но есть фундаментальные проблемы с этим систематическим ИМО.
bmike
у вас когда-нибудь был установлен Apogee Duet?
Лейн

Ответы:

14

В Интернете не так много о том, что coreduetdделает на Mac, кроме «он используется для передачи обслуживания между iOS и macOS».

Что это делает?

Он отслеживает различные состояния системы и приложений, в том числе состояния на устройствах Apple.

Это можно отключить?

Технически, да, используя launchctl. Хотя я (очень) не рекомендую этого делать.

Должен ли он быть отключен?

Полностью субъективный вопрос. Только вы можете решить, подходит ли вам этот курс. Опять же, я рекомендую вам этого не делать.

Каковы (потенциальные) побочные эффекты его отключения (зависимости)?

Потенциально может быть затронуто следующее :

  • Это повлияет на передачу обслуживания между iOS и macOS
  • iCloud Sync
  • Синхронизация почты с Office 365

Однако, немного потрудившись, я смог найти проект исследования безопасности iOS (на http://sans.org ), который исследовал coreduet.dbфайл на iOS. Я применил это мышление к coreduet.dbфайлу в macOS. Вот что я нашел ...

Делая копию coreduet.dbфайла, я изучил ее в sqlite3, сначала получив список всех таблиц.

$ sudo cp /var/db/CoreDuet/coreduet.db ~/

$ sudo sqlite3 coreduet.db

sqlite> .tables
ZCDDMAIRPLANEMODEEVENT    ZCDDMFORECASTINTEGER      ZCDDMSTATISTICINTEGER
ZCDDMAPPNAMEMAPPER        ZCDDMFORECASTREAL         ZCDDMSTATISTICREAL
ZCDDMAPPSTATECHANGEEVENT  ZCDDMFORECASTSCORE        ZCDDMSTATISTICSTRING
ZCDDMATTRIBUTENAMEMAPPER  ZCDDMFORECASTSTRING       ZCDDMSTRINGATTRIBUTE
ZCDDMBACKLIGHTEVENT       ZCDDMINTEGERATTRIBUTE     ZCDDMTHERMALEVENT
ZCDDMBATTERYEVENT         ZCDDMPLUGINEVENT          ZCDDMWAKEDNESSEVENT
ZCDDMBOOKKEEPING          ZCDDMPOOL                 Z_METADATA
ZCDDMBOOTORSHUTDOWNEVENT  ZCDDMPOOLNAMEMAPPER       Z_MODELCACHE
ZCDDMDEVICEEVENT          ZCDDMREALATTRIBUTE        Z_PRIMARYKEY
ZCDDMDEVICEMAPPER         ZCDDMSCREENLOCKEVENT
ZCDDMFORECAST             ZCDDMSLEEPORWAKEEVENT
sqlite>

Похоже, что есть ряд событий, которые он отслеживает. Однако, чтобы увидеть то, что мы могли видеть, я открыл таблицу Z_PRIMARYKEY:

sqlite> SELECT * FROM Z_PRIMARYKEY;
1|CDDMAirplaneModeEvent|0|81
2|CDDMAppNameMapper|0|218
3|CDDMAppStateChangeEvent|0|185302
4|CDDMAttributeNameMapper|0|101
5|CDDMBacklightEvent|0|0
6|CDDMBatteryEvent|0|0
7|CDDMBookkeeping|0|1
8|CDDMBootOrShutdownEvent|0|0
9|CDDMDeviceEvent|0|0
10|CDDMDeviceMapper|0|0
11|CDDMForecast|0|0
12|CDDMForecastInteger|0|0
13|CDDMForecastReal|0|0
14|CDDMForecastScore|0|0
15|CDDMForecastString|0|0
16|CDDMIntegerAttribute|0|0
17|CDDMPluginEvent|0|0
18|CDDMPool|0|79
19|CDDMPoolNameMapper|0|66
20|CDDMRealAttribute|0|0
21|CDDMScreenLockEvent|0|0
22|CDDMSleepOrWakeEvent|0|17
23|CDDMStatisticInteger|0|0
24|CDDMStatisticReal|0|0
25|CDDMStatisticString|0|0
26|CDDMStringAttribute|0|7293
27|CDDMThermalEvent|0|0
28|CDDMWakednessEvent|0|0
sqlite>

Эта конкретная база данных отслеживает системные события. Учитывая, что я нахожусь на iMac, имело бы смысл, что у меня нет таких вещей, как «BatteryEvent» или «PlugInEvent», но у меня будет «AppStateChangeEvents». «AirplaneMode» немного сбивает с толку, так как это iMac, но я вообще отключаю WiFi, за исключением тестирования; в какой-то момент это состояние было добавлено в базу данных.

Идя немного дальше в CCDMAirplaneModeEvent, мы видим, что он отслеживает не только когда, но и где произошло событие (хотя в моей базе данных есть 0данные для этих полей) и кем.

select * FROM ZCDDMAIRPLANEMODEEVENT;

    Z_PK        Z_ENT       Z_OPT       ZAIRPLANEMODEON  ZANONYMIZEDBEACON  ZANONYMIZEDLOCATION  ZLOCALDAYSSINCESUNDAY  ZLOCALTIME  ZLOCALTIMEQUARTERHOURSLOT  ZNETWORKQUALITY  ZUSERID     ZCREATIONDATE
----------  ----------  ----------  ---------------  -----------------  -------------------  ---------------------  ----------  -------------------------  ---------------  ----------  -------------
81          1           1           0                0                  0                    0                      80704       0                          0                0           523938304
Аллан
источник
2
Отлично, но, как вы
Solar Mike
В самом деле. Очень быстро и уже очень хорошо. И "Синхронизация почты с Office 365" уже затронута на локальном, стационарном iMac? Это сюрприз.
LаngLаngС
1
Я думаю, что вы здесь не на том пути. При поиске в консольном приложении основными сообщениями, которые регистрируются, является обработка питания. Я догадываюсь, что фреймворк является и всегда будет частным фреймворком, так что Apple не нужно публиковать какие-либо API-интерфейсы для разработчиков и что он будет доступен через косвенные и другие более стабильные API-интерфейсы. Он должен отслеживать режим AirPlane и состояние системы, чтобы знать, когда и как активировать ЦП для выполнения запланированных задач - управлять бюджетом питания на оборудовании / ЦП / ГП.
bmike
1
@bmike - я так не думаю. Изучая AppStateChangeEvents, есть данные о местоположении, которые содержат неуникальные данные. Теоретически, это должно быть то же самое, если бы это было просто управление мощностью. Хотя, я согласен с вами, это частная структура для Apple.
Аллан