Imagina este escenario. Ejecutas un programa. Pero, no sabes cuánto tardará en terminar. El proceso sigue ejecutándose varios minutos. No puede esperar mucho más, porque hay otros programas importantes esperando en la cola. ¿Alguna vez has estado en una situación como esta? ¡No hay problema! Acabo de encontrar un truco simple para suspender un proceso y reanudarlo más tarde en Linux.
Lo que voy a hacer es simplemente pausar el proceso que se está ejecutando actualmente, realizar otras tareas importantes y luego reanudar el proceso detenido después de que se completen todos los demás procesos.
Esto puede ser muy útil cuando tiene menos RAM o procesador para realizar múltiples tareas. Puede pausar los procesos en ejecución en cualquier momento y reanudarlos más tarde, sin tener que volver a iniciarlos.
Ahora avancemos y aprendamos a suspender o pausar un proceso en ejecución y reanudarlo más tarde en sistemas operativos Linux y similares a Unix.
Suspender un proceso y reanudarlo más tarde en Linux
¡Esto es absolutamente fácil! Todo lo que tiene que hacer es encontrar el PID (ID de proceso) y usar ps
o ps aux
y luego pausarlo, finalmente reanudarlo usando kill
comando.
Veamos un ejemplo. Voy a descargar la imagen de arranque de red de Ubuntu 18.04 usando wget
comando:
$ wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso &
Aquí, &
El símbolo moverá la tarea en ejecución (es decir, wget
) al fondo sin cerrarlo.
Ahora, quiero pausar esta tarea y ejecutar otras tareas importantes. Para hacerlo, primero busque los procesos en ejecución usando el comando:
$ ps
Salida de muestra:
PID TTY TIME CMD 30056 pts/0 00:00:00 bash 16143 pts/0 00:00:01 wget 32677 pts/0 00:00:00 ps
Como puede ver, el PID del comando wget es 16143 .
Detengamos este proceso ahora. Para hacerlo, ejecuta el siguiente comando desde tu Terminal:
$ kill -STOP 16143
Verifique si el proceso se ha detenido o no usando el comando:
$ ps
Salida de muestra:
PID TTY TIME CMD 8155 pts/0 00:00:00 bash 16143 pts/0 00:00:01 wget 16398 pts/0 00:00:00 ps [1]+ Stopped wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
¿Ver? El wget
el proceso se ha detenido.
Continúe y haga otras tareas importantes. Una vez que se completen todas las tareas, reanude el proceso detenido usando el comando:
$ kill -CONT 16143
Para verificar si el proceso se está ejecutando, ejecute ps
comando.
$ ps
¿Ver? ¡El proceso que detuvimos antes se ha reanudado!
Como ya dije, esto será útil si no puede realizar múltiples tareas en un sistema que tiene poca RAM o velocidad de CPU.
TL;DR
Primero, encuentre el pid del proceso en ejecución usando el comando ps. Luego, pausalo usando kill -STOP <PID>
y luego hiberne su sistema. Reanude su sistema y reanude el proceso detenido usando el comando kill -CONT <PID>
.
¿Funcionará después de reiniciar mi sistema?
Quizás se pregunte, ¿esto también funcionará después de un apagado o reinicio completo del sistema?
Y eso es todo. Ahora sabe cómo pausar y reanudar un proceso en sistemas operativos Linux y similares a Unix. Espero que esto ayude.
Lectura recomendada:
- Apagado automático, reinicio, suspensión e hibernación de su sistema Linux en un momento específico
- Active automáticamente su sistema Linux desde el modo de suspensión o hibernación
- Reptyr:mueva un proceso en ejecución de un terminal a otro sin cerrarlo
- Cómo agregar comandos de Linux a la cola y ejecutarlos uno por uno
- Cómo mostrar la información del proceso mediante Procs en Linux