Al examinar el resultado de jobs
in bash
, a menudo obtendrá una lista como la siguiente:
[root@csx-tzg-sac-01 ~]# jobs
[2] Running ( sleep 600 && ls -lh ~ossadmin/*.iso ) &
[3]- Running ( sleep 900 && ls -lh ~ossadmin/*.iso ) &
[4]+ Running ( sleep 900 && ls -lh ~ossadmin/*.iso ) &
¿Puede determinar cuándo un trabajo determinado fue iniciado por elIdentificación del trabajo(es decir, no mirando el pid desde un lugar como ps
)?
¿Si es así, cómo?
Respuesta1
Puede obtener el pid del trabajo de jobs -l
, para no tener que hacerlocazaa través de ps
la salida para encontrar el trabajo. ¿Es por eso que intentabas evitarlo ps
?
jobs -l | sed 's/^\[[0-9]*\][^0-9]*\([0-9][0-9]*\)[^0-9].*/\1/' | xargs ps up
funcionará en bash y zsh.
Si está utilizando zsh, entonces el zsh/parameters
módulo proporciona la $jobstates
variable de matriz. P.ej:
% echo $jobstates[1]
running:-:14975=running
Puede ser más fácil analizar el pid. Y si está en un sistema con /proc
la marca de tiempo en el directorio de proceso le indicará cuándo se inició el proceso.
$ ls -ld /proc/$$