백그라운드 작업이 시작된 시기를 어떻게 확인할 수 있나요?

백그라운드 작업이 시작된 시기를 어떻게 확인할 수 있나요?

jobsin 의 출력을 조사할 때 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를 구문 분석하는 것이 더 쉬울 수 있습니다. 그리고 시스템에 있는 경우 /procproc 디렉토리의 타임스탬프를 통해 프로세스가 시작된 시기를 알 수 있습니다.

$ ls -ld /proc/$$

관련 정보