Comando jobs de Linux
Referencia completa de comandos de Linux
jobsEs un comando integrado en sistemas Linux/Unix para ver y gestionar tareas en segundo plano en la sesión actual de shell. Permite al usuario:
- Ver el estado de todos los trabajos en ejecución en segundo plano
- Controlar el cambio de trabajos entre primer y segundo plano
- Gestionar la ejecución de múltiples tareas concurrentes
Cuando ejecutas comandos que tardan mucho tiempo en la terminal,jobsel comando te ayuda a gestionar eficientemente estos procesos en segundo plano.
Sintaxis básica
jobs [选项] [作业标识符]
Opciones comunes
| Opción | Descripción |
|---|---|
-l |
Muestra el PID (ID de proceso) del trabajo |
-p |
Muestra solo el ID de grupo de procesos del trabajo |
-n |
Muestra solo los trabajos cuyo estado ha cambiado desde la última notificación |
-r |
Muestra solo los trabajos en ejecución |
-s |
Muestra solo los trabajos detenidos |
Explicación detallada de las funciones principales
1. Ver trabajos en segundo plano
El uso más simple es escribir directamentejobsel comando:
Ejemplo
[1] - running sleep 100 &
[2] + stopped vim file.txt
Explicación de la salida:
[1]: número de trabajo (Job ID)-/+:-Indica el trabajo anterior,+Indica el trabajo actualrunning/stopped: estado del trabajo- Al final está el comando que inició el trabajo
2. Mostrar información detallada del proceso
Usa-lla opción para ver el PID del trabajo:
Ejemplo
[1] - 12345 running sleep 100 &
[2] + 12356 stopped vim file.txt
3. Filtrar trabajos por estado específico
Ejemplo
$ jobs -r
# Ver solo los trabajos detenidos
$ jobs -s
Escenarios de aplicación práctica
Escenario 1: Ejecución de tareas de larga duración en segundo plano
Ejemplo
$ long_running_command &
# Ver los trabajos en segundo plano
$ jobs
[1] + running long_running_command &
Escenario 2: Pausar y reanudar trabajos
Ejemplo
$ vim file.txt
# Pulsar Ctrl+Z para pausar vim
^Z
[1] + stopped vim file.txt
# Ver los trabajos detenidos
$ jobs -s
[1] + stopped vim file.txt
# Restaurar vim al primer plano
$ fg %1
Escenario 3: Gestionar múltiples trabajos en segundo plano
Ejemplo
$ sleep 100 &
$ sleep 200 &
$ sleep 300 &
# Ver todos los trabajos
$ jobs -l
[1] 12345 running sleep 100 &
[2] -12356 running sleep 200 &
[3] +12367 running sleep 300 &
# Restaurar el trabajo 2 al primer plano
$ fg %2
# Terminar el trabajo 3
$ kill %3
Combinación de comandos de control de trabajos
jobsGeneralmente se usa junto con otros comandos de control de trabajos:
| Comando | Descripción | Ejemplo |
|---|---|---|
& |
Pone el comando en segundo plano | command & |
Ctrl+Z |
Pausa el trabajo actual en primer plano | Combinación de teclas |
fg |
Restaura el trabajo al primer plano | fg %1 |
bg |
Continúa ejecutando un trabajo detenido en segundo plano | bg %2 |
kill |
Termina el trabajo especificado | kill %3 |
Preguntas frecuentes
P1: ¿Por qué los trabajos en segundo plano terminan al cerrar la terminal?
R: Por defecto, los trabajos en segundo plano están asociados con la sesión de terminal. El usonohupodisownpuede hacer que el trabajo continúe ejecutándose después de cerrar la terminal:
Ejemplo
P2: ¿Cómo hacer referencia a un trabajo específico?
R: Utiliza%junto con el número de trabajo:
%1: trabajo 1%2: trabajo 2%+o%%: trabajo actual%-: trabajo anterior
P3: ¿Cuál es la diferencia entre los comandos jobs y ps?
A:
jobsMuestra solo los trabajos de la sesión de shell actualpsMuestra todos los procesos del sistema, incluidos los de otros usuarios y terminales
Recomendaciones de mejores prácticas
Redirige la salida de los trabajos en segundo plano: para evitar que la salida interfiera con la terminal actual
$ command > output.log 2>&1 &
Usa nombres descriptivos: para identificar fácilmente los diferentes trabajos
$ (sleep 300; echo "Done") &
Revisa regularmente el estado de los trabajos: para evitar acumular muchos trabajos incompletos
$ watch -n 60 jobs
Usa nohup para trabajos importantes: para asegurar que sigan ejecutándose después de desconectar la terminal
$ nohup important_command &
Diagrama de flujo de resumen
