Как определить, когда была запущена фоновая задача?
При обследовании выхода jobs
в bash
вы будете часто получать список, подобный следующему:
[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 ) &
Можете ли вы определить, когда задание было запущено заданием (то есть, не глядя на пид из места, подобного ps
)?
Если так, то как?
1 ответ
Решение
Вы можете получить зарплату от jobs -l
так что вам не придется охотиться через ps
выход, чтобы найти работу. Вот почему вы пытались избежать ps
?
jobs -l | sed 's/^\[[0-9]*\][^0-9]*\([0-9][0-9]*\)[^0-9].*/\1/' | xargs ps up
будет работать в bash и zsh.
Если вы используете Zsh, то zsh/parameters
модуль обеспечивает $jobstates
переменная массива. Например:
% echo $jobstates[1]
running:-:14975=running
Это может быть легче разобрать пид с. И если вы находитесь в системе с /proc
тогда отметка времени в каталоге proc сообщит вам, когда процесс был запущен.
$ ls -ld /proc/$$