bash - trabajos - ¿Cuál es el significado de los signos `+`, `-` y` `que preceden a` Hecho ''cuando finaliza un proceso en segundo plano?
ver procesos en segundo plano linux (2)
Así que aquí está mi entendimiento de ello:
1- Trabajo marcado o que tiene un +
es el último que se envió al fondo.
2- Trabajo marcado o que tiene un -
se envió al fondo en segundo lugar.
3- Otros trabajos de fondo no están marcados.
Aquí hay un ejemplo que acabo de ejecutar en mi sistema:
$bash: /singh/test1 &
[1] 9223
$bash: /singh/test2 &
[2] 9226
$bash: /singh/test3 &
[3] 9234
$bash: /singh/test4 &
[4] 9237
$bash: jobs
[1] Running /singh/test &
[2] Running /singh/test2 &
[3]- Running /singh/test3 &
[4]+ Running /singh/test4 &
Pude ver desde man bash
:
Hay varias formas de referirse a un trabajo en el shell. El carácter% introduce una especificación de trabajo (jobspec). El número de trabajo n puede denominarse% n. También se puede hacer referencia a un trabajo utilizando un prefijo del nombre utilizado para iniciarlo, o utilizando una subcadena que aparece en su línea de comando. Por ejemplo,% ce se refiere a un trabajo detenido. Si un prefijo coincide con más de un trabajo, bash informa de un error. El uso de% ce, por otro lado, se refiere a cualquier trabajo que contenga la cadena ce en su línea de comando. Si la subcadena coincide con más de un trabajo, bash informa de un error. Los símbolos %% y% + se refieren a la noción de shell del trabajo actual, que es el último trabajo detenido mientras estaba en primer plano o se inició en segundo plano. Se puede hacer referencia al trabajo anterior usando% -. Si solo hay un solo trabajo,% + y% - ambos pueden usarse para referirse a ese trabajo. En la salida correspondiente a los trabajos (por ejemplo, la salida del comando de trabajos), el trabajo actual siempre se marca con un +, y el trabajo anterior con un -. Un solo% (sin la especificación del trabajo que lo acompaña) también se refiere al trabajo actual.
Pregunta
¿Cuáles son los significados de +
, -
y ¿Signos que preceden
Done
cuando un proceso de fondo termina?
Ejemplos de interes
Código 1
(sleep 4s; echo first)&
(sleep 2s; echo second)&
(sleep 1s; echo third)&
[1] Done ( sleep 4s; echo first )
[2]- Done ( sleep 2s; echo second )
[3]+ Done ( sleep 1s; echo third )
Código 2
(echo first)&
(echo second)&
(echo third)&
[1]+ Done ( echo first )
[2]+ Done ( echo second )
[3]+ Done ( echo third )
%+ : current job; last job stopped in foreground or started in background
%- : last/previous job
%% : same as +
%+
no solo se muestra para el cambio de estado en un trabajo en segundo plano, sino también para un trabajo en primer plano, por ejemplo, que se ha suspendido con kill -STOP <pid>
.
$ sleep 10
[1]+ Stopped sleep 10
# by running kill -STOP 28105 on another terminal
Vea Bash Job Control Basics para más detalles.
El número de trabajo n puede denominarse ''% n''. Los símbolos ''%%'' y ''% +'' se refieren a la noción de shell del trabajo actual, que es el último trabajo detenido mientras estaba en primer plano o se inició en segundo plano. Un solo ''%'' (sin la especificación del trabajo que lo acompaña) también se refiere al trabajo actual. Se puede hacer referencia al trabajo anterior usando ''% -''. Si solo hay un solo trabajo, ''% +'' y ''% -'' se pueden usar para referirse a ese trabajo. En la salida correspondiente a trabajos (p. Ej., La salida del comando de trabajos), el trabajo actual siempre se marca con un ''+'', y el trabajo anterior con un ''-''.
Con múltiples trabajos ejecutándose en segundo plano, bash
muestra el trabajo, cuando se ha cambiado su estado y cuando llega a otro prompt
. Para ver el trabajo inmediatamente cuando el trabajo cambia su estado / finaliza, se puede usar set
builtin.
$ set -b
$ sleep 10 &
[1] 27866
$ sleep 10 &
[2] 27868
$ [1]- Done sleep 10
[2]+ Done sleep 10