Estoy descargando el archivo con wget, y quiero apagar mi computadora después de que la descarga haya finalizado, pero necesito ir a algún lugar ahora :) ¿Es posible ejecutar el comando en bash exactamente cuando finalice el proceso?
Sé que esto funciona:
wget http://example.com/file.rar; apagado ahora
Pero, ¿y si escribo solo:
wget http://example.com/file.rar
Respuestas:
Puedes hacer algo como esto:
wait esperará a que todos los programas se ejecuten en segundo plano desde el shell actual, es decir, este wget.
Después de que la espera termine, el apagado continuará.
fuente
En otro caparazón, use
para encontrar el PID del comando que desea esperar, luego
para que el apagado no se ejecute hasta que el proceso haya finalizado. Ver también la respuesta de depesz .
fuente
wait
solo funcionará para los comandos iniciados desde el mismo shellMi solución es esta: suspenda su tarea de larga duración con Control + Z, luego escriba algo como:
Si desea ejecutar una reacción diferente en función del éxito o el fracaso de su comando, use && y || como operadores de cortocircuito.
EDITAR: Esto no funcionará con sudo, porque le pedirá su contraseña. En consecuencia, eliminé los ejemplos usando sudo. Si necesita sudo para la segunda tarea, use otro de los métodos publicados aquí.
Por otro lado, creo que tanto GNOME como KDE ofrecen formas de activar un apagado / reinicio sin usar sudo, enviando una señal D-Bus adecuada o algo así.
fuente
fg
..., perosudo
podría ser un problema si te solicita una contraseñaSí, simplemente escriba su segundo comando y presione Entrar. Si su programa actual está desplazando texto, no puede ver lo que está escribiendo correctamente, así que observe sus teclas para hacerlo bien.
Una forma más inteligente es cambiar a otro TTY (CTRL + ALT + F1 a F6) y ejecutar el comando simultáneamente, o si está utilizando un programa de línea de comandos como pantalla, podría crear una nueva ventana en él.
fuente
Si quieres ponerte elegante, verifica el estado de devolución del wget y solo apaga si fue exitoso.
fuente
wget
se realizan scripts, pero mientras se ejecuta no se le solicita que vuelva a generar la prueba.