Ao pesquisar a saída de jobs
in bash
, você geralmente obterá uma lista como esta:
[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 ) &
Você pode determinar quando um determinado trabalho foi iniciado peloID de trabalho(ou seja, não olhando para o pid de um lugar como ps
)?
Se sim, como?
Responder1
Você pode obter o pid do trabalho em jobs -l
, para não precisarcaçaratravés ps
da saída para encontrar o trabalho. É por isso que você estava tentando evitar ps
?
jobs -l | sed 's/^\[[0-9]*\][^0-9]*\([0-9][0-9]*\)[^0-9].*/\1/' | xargs ps up
funcionará em bash e zsh.
Se você estiver usando zsh, o zsh/parameters
módulo fornecerá a $jobstates
variável array. Por exemplo:
% echo $jobstates[1]
running:-:14975=running
Pode ser mais fácil analisar o pid. E se você estiver em um sistema com /proc
o carimbo de data e hora no diretório proc informará quando o processo foi iniciado.
$ ls -ld /proc/$$