want usuario useragent know chrome cambiar agente launchd launch-agent

useragent - ¿Qué significa el estado 78 de launchd? ¿Por qué mi agente de usuario no se ejecuta?



user agent list (6)

Quiero ejecutar un servicio de sincronización al unísono que se ejecuta en segundo plano cada vez que inicie sesión. Pero el código de estado de mi agente es 78 . No sé por qué, intenté algunas correcciones publicadas en línea, pero simplemente no funciona.

¿¿Cuál es el problema?? A continuación se muestra el archivo plist para mi servicio.

<?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>syncmyproject</string> <key>StandardOutPath</key> <string>/var/log/syncmyproject.log</string> <key>StandardErrorPath</key> <string>/var/log/syncmyproject.log</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>Debug</key> <true/> <key>EnableGlobbing</key> <true/> <key>ProgramArguments</key> <array> <string>/usr/local/bin/unison</string> <string>-auto</string> <string>-batch</string> <string>-repeat watch</string> <string>~/home/project</string> <string>~/project</string> </array> </dict> </plist>


De forma similar a lo anterior, obtuve un estado 78 porque tenía un enlace simbólico en la ruta de mi script. La solución fue utilizar el camino absoluto.


Encontré que el error tenía que ver con los permisos. Estaba intentando redirigir los errores y los registros al directorio /var/log que mi usuario no puede escribir. Cambiar la ruta a algo donde mi usuario tenía los permisos adecuados para r + w lo arregló.

Además, tenga cuidado al cargar sus agentes de inicio. No use sudo para cargar una lista si está en el directorio ~ / Library / LaunchAgents.


Esto es lo que me sorprendió: en Mac OS X puedes ejecutar shell-scripts desde la línea de comandos incluso si hay "solo el script" en el archivo. Sin embargo, cuando los ejecuta desde launchd, debe indicar qué binario debe ejecutar el script. Supongo que cuando se ejecuta desde la línea de comandos solo usa el shell en el que se encuentra actualmente (en mi caso bash), pero cuando se ejecuta desde launchd no hay "script circundante". yo añadí

#!/bin/sh

como la primera línea en el archivo de script, y luego funcionó.


Leí man launchctl , encontrar 78 significa que la function not implemented . No ayuda mucho.

Finalmente lo hago funcionar, en realidad hubo errores en la lista, recomiendo instalar el brew cask install launchcontrol , que es una herramienta gui para launchctl, que puede ayudar a detectar errores y solucionar problemas.


Recibí este error al intentar ejecutar mono para iniciar un servidor web local. Resulta que la solución fue no usar la ruta mono dada por "which mono" (que es un enlace simbólico: /Library/Frameworks/Mono.framework/Versions/Current/Commands/mono ) pero la ubicación real del exe (en mi case /Library/Frameworks/Mono.framework/Commands/mono ).


[Se encontró con este problema también, así que documente lo que he encontrado]

"78" es el último código de salida del trabajo que está ejecutando. De man launchctl :

Sin argumentos, enumere todos los trabajos cargados en launchd en tres columnas. La primera columna muestra el PID del trabajo si se está ejecutando. La segunda columna muestra el último estado de salida del trabajo . Si el número en esta columna es negativo, representa el negativo de la señal que detuvo el trabajo. Por lo tanto, "-15" indicaría que el trabajo se terminó con SIGTERM. La tercera columna es la etiqueta del trabajo. Si se especifica [etiqueta], imprime información sobre el trabajo solicitado.

Es decir, debe leer la documentación (o el código fuente) para cualquier trabajo que esté comenzando. (En mi caso, mysqld)

Vale la pena señalar que "78" se menciona como un código de salida estándar en Linux, lo que indica un error de configuración. Así que eche un vistazo a la configuración de su trabajo (¿y los registros de errores?) Para ver si tiene algo mal configurado.