¿Qué quieres decir con "aplicación"? ¿Tiene que ser un programa GUI o se lanza (que sugiero a continuación) aceptable? Si haces lo que una aplicación GUI, ¿qué quieres que haga? ¿Preguntar por el momento en que la computadora debe apagarse cuando se ejecuta?
TJ Luoma
Respuestas:
25
Ok, más allá de mi respuesta anterior, puedo guiarlo a través de cómo obtener cron (un servicio de programación UNIX incorporado) para ejecutar un comando de apagado programado para usted.
¿No necesitas poner sudoahí? Sé que probablemente hará que se cuelgue, pero estoy bastante seguro de que tienes que ser root para ejecutarlo shutdown.
daviesgeek
No se necesitan excepciones, esa es una respuesta asombrosa, felizmente sorprendida, especialmente después de que respondí groseramente. Muchas gracias por su ayuda
Harry
3
@daveisgeek: tiene toda la razón, pero tenga en cuenta que iniciamos crontab con sudo. Esto significa que estamos editando el crontab de root y, por lo tanto, cualquier comando programado dentro se ejecutará como ese usuario.
macaco
Oye, hice esto, y en el momento señalado recibí un cuadro de diálogo que dice: ¿esta computadora se apagará en 10 minutos? Y me pide que cancele. No sé si eso fue el resultado del asunto del cron, o el ahorro de energía que también hice. ¿Se supone que la cosa cron forzará un apagado sin un diálogo de cancelación?
Harry
3
shutdownes en el /sbinque probablemente no está en el valor predeterminado $ PATH de cron. Para solucionarlo, sudo crontab -evuelva a hacerlo , escriba ddpara eliminar la línea (suponiendo que el archivo se parezca al que ha vinculado anteriormente) y vuelva a ingresar la línea como 30 22 * * * /sbin/shutdown -h now.
Al agregar el comando de apagado a un agente de launchd en / Library / LaunchAgents /, no funcionó y 'console' registraría 'shutdown: NOT super-user'. Tal vez esto hubiera funcionado en / System / Library / LaunchAgents (pero se supone que no debes poner cosas allí :-)) Solo necesitaba un apagado normal, así que fui con el osascript y lo puse en ~ / Library / LaunchAgents /bla.shutdown.plist. Funcionó bien.
commonpike
Sin embargo, tuve que usar <code> osascript -e 'tell app "Finder" para cerrar' </code>
commonpike
Esta es la única respuesta correcta. (en mi opinión)
CousinCocaine
9
Esto se puede programar en Preferencias del sistema> Ahorro de energía> Programar . No estoy seguro de que esto inicie un cierre forzado, tendrías que probarlo. Pero esa es una opción integrada para automatizar el apagado / encendido programado.
También puede apagar el sistema por la fuerza con un comando de terminal (requiere root):
apagado -h ahora
Puede poner ese comando en una tarea programada de launchd o cron . Consulte este artículo para obtener más información sobre esos dos servicios.
También es posible que desee revisar una aplicación como el iWannaSleep acertadamente llamado (no estoy seguro si esto obliga a cerrar).
Es posible que desee parecer menos desagradecido, pero si vuelve a leer mi respuesta, verá que le recomiendo una aplicación y si hace un poco de investigación independiente, verá que en realidad hay algunas aplicaciones más que tienen esta capacidad.
macaco
iWannaSleep es el primer resultado que la gente recomienda en google, y no hace lo que quiero. ¿Y me estás recomendando que aprenda algo de Unix para apagar la computadora?
Harry
3
Lo recomiendo porque es una forma efectiva de lograr lo que quieres usando herramientas integradas. Si no puede encontrar una aplicación que se adapte a sus necesidades, es posible que deba buscar algo similar a mi sugerencia.
macaco
1
Ahorro de energía »El horario no es una buena respuesta, ya que avisará al usuario 10 minutos antes del apagado y le ofrecerá cancelar el proceso.
TJ Luoma
3
Puede usar shutdowndirectamente para programar un apagado en cualquier momento en el futuro:
shutdown -h time
donde time especifica una hora futura en uno de los dos formatos: + número, o aammddhhmm, donde el año, mes y día pueden estar predeterminados a los valores actuales del sistema. La primera forma baja el sistema en minutos y la segunda en el tiempo absoluto especificado.
Todos los usuarios activos reciben una amplia notificación.
Se muestra una gran advertencia poco antes de que comience el apagado.
Las aplicaciones en ejecución se les pide que abandonen.
Las aplicaciones que ignoran la buena solicitud se cierran más firmemente.
El cierre de sesión se deja completar, antes de que la Mac finalmente se apague.
Es muy difícil para una aplicación o proceso no autorizado bloquear estos pasos.
Por qué no shutdown
El uso shutdownforzará a cerrar todos los procesos en su Mac, incluidas las aplicaciones gráficas. Para muchas aplicaciones, este es un comportamiento agresivo y no brinda a la aplicación muchas oportunidades para guardar estado o datos.
Asistente de horario
Power Manager incluye una tarea del Asistente de programación para cerrar una programación .
Divulgación: trabajo con la compañía que hace Power Manager.
puede usar SendAppleEventToSystemProcess (kAEShutDown), luego puede usar el comando killall -u username para eliminar todas las aplicaciones (ya que no desea que se pueda cancelar) también puede consultar la clase de temporizador: developer.apple.com/library/ mac / # documentation / Cocoa / Reference / ...
Samantha Catania
1
Gran artículo, pero OP se estaba negando a usar cron o launchd, dudo que esté buscando codificar su propia solución a este problema.
macaco
1
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Respuestas:
Ok, más allá de mi respuesta anterior, puedo guiarlo a través de cómo obtener cron (un servicio de programación UNIX incorporado) para ejecutar un comando de apagado programado para usted.
Se ejecutará como root y será forzado.
sudo crontab -e
Deberá ingresar su contraseña de inicio de sesión y luego presionar enter.
Ahora estará en un editor de texto (vim). Ingrese cuidadosamente las siguientes pulsaciones de teclas.
Digamos que desea que la máquina se apague a las 2 am todos los días, ahora ingresaremos:
Si desea que la máquina se apague a las 2:30 am todos los días, debe ingresar:
Ahora debería volver a la línea de comando donde comenzó.
Ya terminaste!
fuente
sudo
ahí? Sé que probablemente hará que se cuelgue, pero estoy bastante seguro de que tienes que ser root para ejecutarloshutdown
.shutdown
es en el/sbin
que probablemente no está en el valor predeterminado $ PATH de cron. Para solucionarlo,sudo crontab -e
vuelva a hacerlo , escribadd
para eliminar la línea (suponiendo que el archivo se parezca al que ha vinculado anteriormente) y vuelva a ingresar la línea como30 22 * * * /sbin/shutdown -h now
.Sin embargo, se puede cancelar:
Detenerse en
yymmddhhmm
:Detener en 4 minutos:
/Library/LaunchAgents/me.lri.forceshutdown.plist
:Si el plist era propiedad de un usuario normal, intentar cargarlo provocaría el error
launchctl: Dubious ownership on file (skipping)
:El agente se puede cargar al cerrar sesión y volver a iniciarla, o con:
sudo crontab -e
Esto realizaría un apagado normal no forzado:
fuente
Esto se puede programar en Preferencias del sistema> Ahorro de energía> Programar . No estoy seguro de que esto inicie un cierre forzado, tendrías que probarlo. Pero esa es una opción integrada para automatizar el apagado / encendido programado.
También puede apagar el sistema por la fuerza con un comando de terminal (requiere root):
apagado -h ahora
Puede poner ese comando en una tarea programada de launchd o cron . Consulte este artículo para obtener más información sobre esos dos servicios.
También es posible que desee revisar una aplicación como el iWannaSleep acertadamente llamado (no estoy seguro si esto obliga a cerrar).
fuente
Puede usar
shutdown
directamente para programar un apagado en cualquier momento en el futuro:donde time especifica una hora futura en uno de los dos formatos: + número, o aammddhhmm, donde el año, mes y día pueden estar predeterminados a los valores actuales del sistema. La primera forma baja el sistema en minutos y la segunda en el tiempo absoluto especificado.
fuente
# vea la nota abajo
Nota:
Tal como está escrito, la lista hará que la computadora se apague a las 11 p.m. (hora local) todos los días.
Si desea cambiar la hora, edite el script en cualquier editor de texto. Cambie las teclas de hora y minuto, extraídas aquí:
(tenga en cuenta el uso del tiempo de 24 horas)
fuente
Apagado programado más agradable
Si desea apagar su Mac de manera segura a una hora programada, considere Power Manager ; se cierra muy bien sin permitir que las aplicaciones bloqueen el proceso:
Es muy difícil para una aplicación o proceso no autorizado bloquear estos pasos.
Por qué no
shutdown
El uso
shutdown
forzará a cerrar todos los procesos en su Mac, incluidas las aplicaciones gráficas. Para muchas aplicaciones, este es un comportamiento agresivo y no brinda a la aplicación muchas oportunidades para guardar estado o datos.Asistente de horario
Power Manager incluye una tarea del Asistente de programación para cerrar una programación .
Divulgación: trabajo con la compañía que hace Power Manager.
fuente
Echaría un vistazo a esta nota técnica de Apple
fuente