¿Cómo apagar la computadora después de completar una tarea?
25
Generalmente comienzo una descarga antes de ir a la escuela.
¿Qué comando debo usar para hacer automáticamente los guardados necesarios y apagar la computadora después de que se haya completado una tarea en particular?
(Digamos, después de instalar las actualizaciones o después de descargar un archivo grande).
wget http://..../somelargefile || halt- haltse ejecutará si wgetdevuelve errores
Alternativa a esto es usar kshutdown: en esta aplicación puede especificar qué acción se debe hacer (reiniciar / apagar / hibernar / etc. o ejecución del comando) y cuándo (después de un tiempo o cuando sale de otra aplicación). Si desea utilizar esta herramienta, debe elegir el proceso correcto: algunas utilidades de actualización inician pocos subprocesos.
También puedes dar shutdownun tiempo para esperar; no es necesario usar kshutdown para ese propósito.
Cascabel
1
No, pero shutdownno tiene forma de esperar un evento real.
Shadur
18
Cada proceso tiene un directorio nombrado de acuerdo con su id de proceso (pid) en el procsistema de archivos. Por lo tanto, puede esperar la finalización de un proceso específico comprobando si su directorio existe repetidamente.
Puede usar esto para realizar un apagado del sistema después de la finalización del proceso de esta manera (reemplace 2296 por el pid para esperar):
su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'
Ventajas:
Puede decidir si se apaga o no después de activar el comando de shell
El apagado se emite como root, el comando para esperar no se realiza necesariamente como root (no es necesario solucionar el sudoindicador de contraseña tardía ).
Desventajas
Puede suceder que su proceso finalice y el SO reutilice el mismo pid para un proceso recién generado dentro de ese segundo (condición de carrera). Por lo tanto, continuará esperando a que termine ese nuevo proceso.
Punto principal: Esto funciona incluso si el proceso ha comenzado.
Heisenberg
Si ha comenzado algo desde un terminal que todavía tiene abierto psen ese mismo terminal, debería ayudarlo a detectar el PID para el CMD. Si el proceso estaba / está en otro terminal, la salida ps para todo a través de grep para filtrar su comando debería ayudarlo a encontrarlops -elf | grep <command_related_word>
TafT
Mejor revise mi respuesta en base a pgrepaka grep proceso ...
Puede usar los operadores &&y ||para encadenar comandos juntos. Por ejemplo:
apt-get update && sleep 2 && init 0
que realizará una actualización del sistema utilizando aptitude, esperará 2 segundos e irá al nivel de ejecución 0, dependiendo de su sistema, esto puede o no apagar el hardware.
Para hablar con una o más operaciones después de una operación más arbitraria, como un presumiblemente navegador web, la descarga requerirá una lógica adicional para ver el archivo de descarga para verificar que la descarga se haya completado, sin embargo, la lógica del shell no ha cambiado.
shutdown
un tiempo para esperar; no es necesario usar kshutdown para ese propósito.shutdown
no tiene forma de esperar un evento real.Cada proceso tiene un directorio nombrado de acuerdo con su id de proceso (pid) en el
proc
sistema de archivos. Por lo tanto, puede esperar la finalización de un proceso específico comprobando si su directorio existe repetidamente.Puede usar esto para realizar un apagado del sistema después de la finalización del proceso de esta manera (reemplace 2296 por el pid para esperar):
Ventajas:
sudo
indicador de contraseña tardía ).Desventajas
fuente
ps
en ese mismo terminal, debería ayudarlo a detectar el PID para el CMD. Si el proceso estaba / está en otro terminal, la salida ps para todo a través de grep para filtrar su comando debería ayudarlo a encontrarlops -elf | grep <command_related_word>
pgrep
aka grep proceso ...Puede usar los operadores
&&
y||
para encadenar comandos juntos. Por ejemplo:que realizará una actualización del sistema utilizando aptitude, esperará 2 segundos e irá al nivel de ejecución 0, dependiendo de su sistema, esto puede o no apagar el hardware.
Para hablar con una o más operaciones después de una operación más arbitraria, como un presumiblemente navegador web, la descarga requerirá una lógica adicional para ver el archivo de descarga para verificar que la descarga se haya completado, sin embargo, la lógica del shell no ha cambiado.
fuente
Si desea monitorear un proceso ya iniciado, puede hacerlo en un shell :
fuente
Hay una aplicación, llamada sentinella, que puede hacerlo por usted con su GUI:
para instalarlo:
fuente