He estado buscando ejecutar algunos comandos de limpieza cuando un usuario cierra la sesión, sin embargo, la antigua función de enlace de cierre de sesión, aunque todavía funciona, ha quedado en desuso por algún tiempo, por lo que es posible que no esté con nosotros por mucho tiempo.
Desafortunadamente, aunque launchd
proporciona una alternativa conveniente a los enlaces de inicio de sesión, no existe un reemplazo tan obvio para los enlaces de cierre de sesión.
Ya he experimentado con la creación de un script de shell que se inicia al iniciar sesión, y simplemente duerme hasta que se recibe una señal de apagado, sin embargo, esto no parece funcionar (el script nunca recibe la señal durante el funcionamiento normal).
De lo contrario, no estoy seguro de cuál sería la mejor manera de ejecutar un comando rápido al cerrar sesión. Sé que hay algunas utilidades de terceros que pueden hacerlo, pero ¿hay alguna forma "correcta" de hacerlo?
line 8: syntax error near unexpected token ;'
(con una tumba antes del punto y coma)Puede usar iHook para ejecutar enlaces de inicio de sesión / cierre de sesión, que he encontrado que aún funcionan para los enlaces de inicio de sesión y cierre de sesión no interactivos escritos en Bash y Python en Yosemite.
http://rsug.itd.umich.edu/software/ihook/
fuente
Si a otros que llegan aquí desde los motores de búsqueda no les importa usar un enlace de cierre de sesión, ejecute, por ejemplo:
sudo defaults write com.apple.loginwindow LogoutHook '~/.logouthook';echo $'#!/usr/bin/env bash\n\nsay a'>~/.logouthook;chmod +x ~/.logouthook
Luego
~/.logouthook
se ejecuta la próxima vez que cierre sesión.El valor de la
LogoutHook
clave tiene que ser una ruta a un ejecutable y no un comando de shell. Eldefaults
comando se modifica/var/root/Library/Preferences/com.apple.loginwindow.plist
.fuente
launchd
, es una pena que no tengaRunBeforeUnload
una opción similar .Tampoco puedo hacer que el elemento de inicio de sesión de launchd funcione en 10.10.1, pero la clave LogoutHook en "com.apple.loginwindow.plist" de la raíz funciona bien. ¿Hay otros ejemplos para el método launchd?
De todos modos, escribí un AppleScript para eliminar el volumen del sistema al cerrar sesión para que no se escuche el timbre de inicio en el próximo inicio. Lo que no he resuelto son los detalles para administrar múltiples comandos de cierre de sesión basados en una sola tecla LogoutHook, o si es posible almacenar varias claves LogoutHook, por lo que todavía estoy interesado en el método Launchd, que podría administrarse con Lingon, o incluso Lingon 3, que tiene un alcance mucho más limitado que el original (presumiblemente para existir en la tienda de aplicaciones).
fuente
sh
), por lo que debe ser un archivo ejecutable, lo notaré en mi respuesta.