Se puede hacer con un proxy de reinicio, es decir, cambiarías el nombre de /sbin/reboot
Por ejemplo sudo mv /sbin/reboot /sbin/reboot.ori
y luego crear un reboot
enlace simbólico al /sbin/reboot_proxy
bash script que tiene el(los) comando(s) que debes ejecutar antes del reinicio y por último ejecuta /sbin/reboot.ori
. De hecho, tengo esta configuración en mi Mac con OS X 10.8.5 y funciona bien. Estoy atrapando tanto reboot
y shutdown
comandos. Que son los que se ejecutan al pulsar el botón Apple menú > Reiniciar... y o Apagar... comandos.
- Nota: Es mejor tener un segundo bash script para alternar el estado del archivo original y el proxy bash script ya que tiene que volver a establecerse antes de que se realicen las actualizaciones de OS X que tocarán el/los archivo/s.
Este es el código en mi shutdown_proxy
bash script que tiene un enlace simbólico tanto para el reboot
y shutdown
Los comandos después del original fueron renombrados con un .ori
extensión. Siéntase libre de adaptarla para su uso.
Contenido de reboot_proxy
#!/bin/bash
_name="$0";
echo "Reboot Proxy Executing..."
# Place command(s) to execute before reboot directly below this comment:
_command="$_name.ori"
echo "Executing $_command $@..."
"$_command" "$@"
Permítanme añadir que, desde el punto de vista de la seguridad, hay quienes argumentan que esto es algo malo, y yo diría que, hasta cierto punto, eso es cierto en las condiciones adecuadas; sin embargo, como yo soy el único que ha tocado y tocará mi Mac y tengo varias capas de seguridad más allá de las incorporadas, personalmente no tengo ningún problema en utilizar este método.
0 votos
Sólo para estar seguro de lo que está preguntando, usted lo que un programa para iniciar cuando el menú de Apple> Reiniciar ... se hace clic en y que el programa se ejecuta y termina su tarea antes de que el proceso de reinicio real se lleva a cabo. ¿Es eso correcto? ¿Qué pasa cuando un
shutdown -r now
¿el comando, que es un reinicio, se emite en un Terminal o desde una aplicación?0 votos
Eso no importa, sólo necesito que este programa se ejecute al hacer clic en el menú Apple > Reiniciar.
0 votos
Como he mencionado, mi método me funciona desde la GUI y la CLI bajo OS X 10.8.5. Qué versión de OS X estás usando para que pueda probar bajo esa versión?
0 votos
Estoy usando Yosemite, pensé que tal vez era un problema de versión pero no estaba seguro.
0 votos
Vale, hoy probaré con Yosemite un poco más tarde, primero tengo que ir a cortar la hierba.
0 votos
En una compilación limpia de OS X 10.10.4 acabo de probar mi
shutdown_proxy
script y funciona tanto si hago clic en los comandos del menú Apple > Reboot... y o Shut Down... como si ejecuto reboot y o shutdown en un Terminal. Así que es posible que tenga que mostrar y o explicar lo que has hecho para que yo pueda solucionar el problema. La forma en que el mío se establece lareboot
yshutdown
se han renombrado los binarios y se ha creado un enlace simbólico llamadoreboot
yshutdown
apuntar a mishutdown_proxy
en el mismo directorio. El código en el proxy script se ejecuta como he dicho en los 4 casos de uso. No veo ninguna razón por la que no se pueda adaptar sólo para el reinicio.0 votos
Hrm, creo que he seguido mal tus instrucciones. Básicamente lo que hice fue cambiar el nombre de /sbin/reboot a /sbin/reboot.OLD y luego hice un bash script llamado reboot y dentro escribí lo que necesitaría (básicamente es solo ejecutar una aplicación) y luego en la última línea hice que hiciera shutdown -r now para realmente realizar el reinicio. Esto funciona bien desde la CLI pero cuando uso la GUI actúa como un reinicio normal
0 votos
Aunque originalmente dije "... y luego crea un /sbin/reboot bash script que tenga el/los comando/s que debes ejecutar antes del reinicio..." Lo dije porque sólo querías que actuara al reiniciar sin embargo creo que vas a tener que tener
reboot
como un symlink al proxy script para que funcione.0 votos
Muy bien, creo que lo entiendo. Voy a intentarlo y ver si funciona.
0 votos
Tengo
/sbin/shutdown_proxy
el bash script, y un enlace simbólico llamadoreboot
yshutdown
que apuntan a/sbin/shutdown_proxy
y el originalreboot
yshutdown
binarios tienen ahora un.ori
extensión. Todos los archivos están en/sbin
y propiedad deroot:wheel
. Utiliza mi proxy script sólo lo llamareboot_proxy
ya que sólo lo quieres para eso, y utiliza el script de mi respuesta, tal cual, colocando tu(s) comando(s) después del comentario como se indica. Cambia el nombre delreboot
binarioreboot.ori
. Dado que su único deseo es reiniciar, no cambie el nombre delshutdown
binario, estoy tratando de explicar cómo funciona esto en mi sistema también.0 votos
De nada y me alegro de que hayas podido hacerlo funcionar.