jobs
in 의 출력을 조사할 때 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 ) &
특정 작업이 언제 시작되었는지 확인할 수 있습니까?직업(즉, 와 같은 곳에서 pid를 보는 것이 아니라 ps
)?
그렇다면 어떻게?
답변1
작업의 pid를 에서 얻을 수 있으므로 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
pid를 구문 분석하는 것이 더 쉬울 수 있습니다. 그리고 시스템에 있는 경우 /proc
proc 디렉토리의 타임스탬프를 통해 프로세스가 시작된 시기를 알 수 있습니다.
$ ls -ld /proc/$$