Comando Linux fg

Linux 命令大全Guía completa de comandos Linux

fgEs un comando importante para el control de procesos en sistemas Linux/Unix, su nombre completo es "foreground" (primer plano). Su función principal es cambiar los trabajos (jobs) que se ejecutan en segundo plano al primer plano para continuar su ejecución.

¿Por qué se necesita el comando fg?

Imagina que estás pidiendo comida en un restaurante:

  1. Pides el plato principal (proceso en primer plano)
  2. Al mismo tiempo, pides a la cocina que prepare el postre (proceso en segundo plano)
  3. Cuando terminas el plato principal, puedes pedir al camarero que traiga el postre a la mesa (comando fg)

En Linux, este mecanismo de conmutación de trabajos entre primer plano y segundo plano te permite:

  • Controlar flexiblemente el orden de ejecución de múltiples tareas
  • Suspender temporalmente la tarea actual para atender asuntos más urgentes
  • Utilizar eficientemente las sesiones de terminal

Sintaxis básica

fg [作业标识]

Descripción de parámetros

Parámetro Descripción
Sin parámetros Restaura el trabajo que se puso en segundo plano más recientemente
%n Restaura el trabajo con número de trabajo n
%str Restaura el trabajo que comienza con str
%?str Restaura el trabajo que contiene str
%+ o %% Equivale a sin parámetros, restaura el trabajo más reciente
%- Restaura el penúltimo trabajo que se puso en segundo plano

Ejemplos de uso

Ejemplo 1: Uso básico

  1. Inicia una tarea de larga duración y colócala en segundo plano:

    sleep 60 &
    [1] 12345  # 系统返回作业号 [1] 和进程ID 12345
  2. Ver la lista de trabajos actuales:

    jobs
    [1]+  运行中               sleep 60 &
  3. Traer el trabajo de vuelta al primer plano:

    fg %1
    # 或者简写为
    fg

Ejemplo 2: Restaurar un trabajo específico

Ejemplo

# Iniciar múltiples trabajos en segundo plano
python script1.py &
python script2.py &

# Ver la lista de trabajos
jobs
[1]- En ejecución python script1.py&
[2]+ En ejecución python script2.py&

# Restaurar el primer trabajo
fg %1

Cómo funciona

Transición de estados del proceso

Ejemplo

graph LR
A[Ejecución en primer plano] -->|Ctrl+Z| B[Estado de pausa]
    B -->|fg| A
B -->|bg| C[Ejecución en segundo plano]
    C -->|fg| A
  1. Proceso en primer plano: Ocupa la terminal y recibe entrada del teclado
  2. Proceso en segundo plano: No ocupa la terminal y no puede recibir entrada
  3. Proceso en pausa: Suspendido, esperando ser restaurado

Mecanismo de señales

Cuando se ejecutafg:

  1. El sistema envía al trabajoSIGCONTSeñal (continuar ejecución)
  2. Establece el grupo de procesos del trabajo como el grupo de procesos en primer plano de la terminal
  3. La terminal redirige la entrada/salida a ese proceso

Preguntas frecuentes

P1: ¿Cómo saber qué trabajos en segundo plano hay actualmente?

Usajobsel comando para ver:

Ejemplo

jobs -l

Ejemplo de salida:

[1]- 12345 运行中        sleep 100 &
[2]+ 12346 停止         vim file.txt

P2: ¿Cuál es la diferencia entre fg y bg?

Comando Función Control de terminal
fg Lleva el trabajo al primer plano Ocupa la terminal
bg Hace que el trabajo en pausa continúe ejecutándose en segundo plano No ocupa la terminal

P3: ¿Por qué el programa no puede recibir entrada después de fg?

Puede que el programa esté en pausa (se muestra como "Detenido"), primero es necesario enviar la señal de continuación:

Ejemplo

kill -CONT <PID>
fg %1

Escenarios de aplicación práctica

Escenario 1: Desarrollo y depuración

>

Iniciar el servidor de desarrollo:

Ejemplo

python manage.py runserver
# Presiona Ctrl+Z para pausar
[1]+ Detenido python manage.py runserver

Ejecutar temporalmente otros comandos

Restaurar el servidor:

Ejemplo

fg

Escenario 2: Edición de archivos

Ejemplo

vim important_file.txt
# Presiona Ctrl+Z para pausar la edición

# Ver el contenido del archivo
cat related_file.txt

# Volver a la edición
fg

Precauciones

  1. Asociación con la terminal: El trabajo en segundo plano está asociado con la terminal que lo inició; cerrar la terminal terminará el trabajo
  2. Interferencia de salida: La salida de un trabajo en segundo plano puede aparecer repentinamente en el primer plano, interfiriendo con el trabajo actual
  3. Limitaciones de permisos: Algunos programas que requieren interacción con la terminal (como la entrada de contraseñas) no pueden ejecutarse en segundo plano
  4. Reutilización de números de trabajo: Los números de trabajo son únicos durante la sesión, pero las diferentes sesiones de terminal cuentan de forma independiente

Técnicas avanzadas

Uso combinado con nohup

Hacer que el trabajo se ejecute de forma persistente en segundo plano (incluso si se sale de la terminal):

Ejemplo

nohup long_running_task &
# Después se puede reconectar y restaurar
fg %1

Usar disown para desvincular

Ejemplo

python server.py &
jobs -l               # Anota el número de trabajo
disown %1             # Desvincula de la terminal
# Ahora puedes cerrar la terminal de forma segura

Linux 命令大全Guía completa de comandos Linux

Otras extensiones