1

Я использую Dropbox для синхронизации файлов с моим веб-сайтом, который работает на Mac OS X Mountain Lion. Проблема в том, что, если я не вошел в систему, Dropbox не работает, и в результате каких-либо изменений, которые я делаю на своем веб-сайте на другом компьютере, связанном с Dropbox, веб-сайт не обновляется.

Я попытался решить эту проблему, запустив Dropbox в качестве демона при запуске. Я создал запись launchd в /Library /LaunchDaemons, используя ключ UserName для запуска Dropbox от себя, и он запускается, но ничего не обновляется. Когда я перенаправляю вывод исполняемого файла Dropbox в файл, я вижу следующую ошибку, хотя для меня не очевидно, что это фатально, и я все еще вижу Dropbox в списке процессов.

/Applications/Dropbox.app/Contents/Resources/lib/python2.7/lib-ol_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
2013-09-15 17:42:20.592 Dropbox[267:707] Unable to simultaneously satisfy constraints:

(
    <NSLayoutConstraint:0x5636c30 H:[_NSAlertContentView:0x56319e0(<=0)]>,
    <NSLayoutConstraint:0x5636b70 H:[_NSAlertContentView:0x56319e0(>=420)]>
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x5636c30 H:[_NSAlertContentView:0x56319e0(<=0)]>

Set the NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints to YES to have -[NSWindow visualizeConstraints:] automatically called when this happens.  And/or, break on objc_exception_throw to catch this in the debugger.
2013-09-15 17:42:20.593 Dropbox[267:707] Unable to simultaneously satisfy constraints:

(
    <NSLayoutConstraint:0x5637240 V:[_NSAlertContentView:0x56319e0(<=0)]>,
    <NSLayoutConstraint:0x5637180 V:[_NSAlertContentView:0x56319e0(>=131)]>
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x5637240 V:[_NSAlertContentView:0x56319e0(<=0)]>

Set the NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints to YES to have -[NSWindow visualizeConstraints:] automatically called when this happens.  And/or, break on objc_exception_throw to catch this in the debugger.
2013-09-15 17:42:20.612 Dropbox[267:707] Error (1000) creating CGSWindow on line 259
2013-09-15 17:42:20.614 Dropbox[267:707] (
0   CoreFoundation                      0x98598e8b __raiseError + 219
1   libobjc.A.dylib                     0x987e152e objc_exception_throw + 230
2   CoreFoundation                      0x98598d21 -[NSException raise] + 17
3   _objc.so                            0x02b30b2f PyObjCErr_ToObjCWithGILState + 63
4   _objc.so                            0x02b11501 PyObjCFFI_BuildResult + 4673
5   _objc.so                            0x02b0254f ffi_closure_SYSV_inner + 127
6   _objc.so                            0x02b02352 ffi_closure_SYSV + 34
7   libobjc.A.dylib                     0x987ee5d3 -[NSObject performSelector:withObject:] + 70
8   Foundation                          0x90d9d326 __NSThreadPerformPerform + 395
9   CoreFoundation                      0x9846f04f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
10  CoreFoundation                      0x9846ea79 __CFRunLoopDoSources0 + 233
11  CoreFoundation                      0x98494826 __CFRunLoopRun + 934
12  CoreFoundation                      0x9849401a CFRunLoopRunSpecific + 378
13  CoreFoundation                      0x98493e8b CFRunLoopRunInMode + 123
14  HIToolbox                           0x9107af5a RunCurrentEventLoopInMode + 242
15  HIToolbox                           0x9107acc9 ReceiveNextEventCommon + 374
16  HIToolbox                           0x9107ab44 BlockUntilNextEventMatchingListInMode + 88
17  AppKit                              0x9907693a _DPSNextEvent + 724
18  AppKit                              0x9907616c -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 119
19  AppKit                              0x9906c5cc -[NSApplication run] + 855
20  _objc.so                            0x02b022ad ffi_call_SYSV + 29
21  _objc.so                            0x02b025c9 ffi_call + 89
22  _objc.so                            0x02b1b2e9 PyObjCFFI_Caller + 2809
23  _objc.so                            0x02b4006a PyObjCSelector_GetClass + 698
24  Python                              0x02209918 PyObject_Call + 88
25  Python                              0x022be2cf PyEval_EvalFrameEx + 5663
26  Python                              0x022c4571 PyEval_EvalCodeEx + 2081
27  Python                              0x022c20d3 PyEval_EvalFrameEx + 21539
28  Python                              0x022c4571 PyEval_EvalCodeEx + 2081
29  Python                              0x022c20d3 PyEval_EvalFrameEx + 21539
30  Python                              0x022c4571 PyEval_EvalCodeEx + 2081
31  Python                              0x0223b3d2 PyClassMethod_New + 1138
32  Python                              0x02209918 PyObject_Call + 88
33  Python                              0x022bea8c PyEval_EvalFrameEx + 7644
34  Python                              0x022c4571 PyEval_EvalCodeEx + 2081
35  Python                              0x022c20d3 PyEval_EvalFrameEx + 21539
36  Python                              0x022c2fb2 PyEval_EvalFrameEx + 25346
37  Python                              0x022c2fb2 PyEval_EvalFrameEx + 25346
38  Python                              0x022c2fb2 PyEval_EvalFrameEx + 25346
39  Python                              0x022c4571 PyEval_EvalCodeEx + 2081
40  Python                              0x022c46f7 PyEval_EvalCode + 87
41  Python                              0x022e8fa5 PyRun_SimpleFileExFlags + 789
42  Python                              0x022e90f8 PyRun_SimpleFile + 40
43  Dropbox                             0x000067f1 start + 17777
44  Dropbox                             0x00006f89 main + 1481
45  Dropbox                             0x00002382 start + 258
46  Dropbox                             0x000022a9 start + 41

`

2 ответа2

0

« Ошибка (1000) при создании CGSWindow в строке 259 » показывает, что внутреннему приложению Python необходим некоторый графический интерфейс (возможно, экран флэш-памяти или всплывающее меню). По умолчанию LaunchAgents/Daemons не имеют графического доступа, возможно, он даже еще не активирован.

Со страницы руководства launchctl :

В настоящее время известны следующие типы сеансов: Aqua, LoginWindow, Background, StandardIO и System.

В файле LimitLoadToSessionType launchd попробуйте добавить требование LimitLoadToSessionType типа сеанса "Aqua" и "LoginWindow".

<key>LimitLoadToSessionType</key>
  <array>
    <string>LoginWindow</string>
    <string>Aqua</string>
  </array>

Помните, что приложение, вероятно, будет закрыто и перезапущено при входе в систему. С техникой Apple Daemon:

Если вы устанавливаете LimitLoadToSessionType в массив, имейте в виду, что каждый экземпляр вашего агента работает независимо. Например, если вы настроили ваш агент для запуска в LoginWindow и Aqua, система сначала запустит экземпляр вашего агента в контексте loginwindow. Когда пользователь входит в систему, этот экземпляр будет прерван, а второй экземпляр будет запущен в стандартном контексте графического интерфейса пользователя.

0

Похоже, много работы для чего-то, что может быть выполнено, если Mercurial/Git работает на целевой машине без входа в систему. С этим вы получаете дополнительное преимущество контроля версий.

Автоматическая вытяжка от Mercurial

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .