it-swarm-es.tech

¿Cómo apagar la computadora después de completar una tarea?

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).

También he publicado en askubunt .

27
El Burro

Depende de que empezaste la tarea. Si se trata de una herramienta de línea de comandos, simplemente puede ejecutar halt o shutdown -h now:

  1. wget http://..../somelargefile; halt - halt se ejecutará después de wget

  2. wget http://..../somelargefile && halt - halt se ejecutará si wget no devuelve errores

  3. wget http://..../somelargefile || halt - halt se ejecutará si wget devuelve errores

Una 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 de 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.

KShutdown

26
pbm

Cada proceso tiene un directorio nombrado de acuerdo con su id de proceso (pid) en el sistema de archivos proc. 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 cerrar o no después de activar el comando Shell
  • El apagado se emite como root, el comando para esperar no se realiza necesariamente como root (no es necesario solucionar el último Sudo- solicitud de contraseñ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.
19
moooeeeep

Puedes usar el && y || operadores para encadenar comandos juntos. Por ejemplo:

apt-get update && sleep 2 && init 0

que realizará una actualización del sistema usando 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 de Shell no ha cambiado.

3
Tok

Si desea monitorear un proceso ya iniciado, puede hacerlo en un Shell :

# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now
3
Gilles Quenot

Hay una aplicación, llamada sentinella, que puede hacerlo por usted con su GUI: sentinella

para instalarlo:

Sudo aptitude update
Sudo aptitude install sentinella
1
shgnInc