백그라운드 프로세스에 작업 번호를 수동으로 할당

백그라운드 프로세스에 작업 번호를 수동으로 할당

두 개의 작업을 백그라운드로 보낸다고 가정해 보겠습니다.

$ sleep 77 &
$ sleep 99 &

그럼 난 내 일을 확인해

$ jobs
> [1]  - running    sleep 77
> [2]  + running    sleep 99

이 직책에 할당된 직무 번호를 제어할 수 있나요? 여기서 올바른 용어를 사용하고 있는지 잘 모르겠습니다. [1]이전 예에서 합계로 표시된 숫자에 대해 이야기하고 있습니다.[2]

사용 사례는 다음과 같습니다. 자격 증명을 수시로 업데이트하는 작업이 필요하지만 대부분의 경우 휴면 상태입니다. 호출되면 자동으로 백그라운드로 보내는 함수를 작성했습니다. 프로세스를 제어하고 싶었기 때문에 의도적으로 이렇게 했습니다. 즉, 분명히 이것이 직업이기를 바랐습니다.

함수를 호출했는데 다른 작업이 없으면 작업 번호를 얻습니다 [2]. ( [1]함수를 호출하는 하위 프로세스라고 가정합니다 .) 나중에 job1백그라운드로 보낼 때 job number 는 가져오지만 [1]job job2number 는 가져오지 않기 때문에 이는 혼란스럽습니다 [3]. 저는 수면 기능에 이렇게 큰 숫자를 수동으로 할당할 수 있으면 좋겠다고 생각했습니다 [99]. 이것이 가능할까요? 또는 ?bashzsh

답변1

아니요. 백그라운드 프로세스에 할당된 작업 번호를 지정할 수 없습니다.

그러나 가장 최근의 백그라운드 프로세스의 PID를 얻을 수 있어 $!훨씬 더 유용합니다.

예를 들어

$ sleep 77 &
[5] 21959
$ job1=$!

$ sleep 99 &
[6] 21960
$ job2=$!

$ echo job1=$job1 job2=$job2
job1=21959 job2=21960

그런 다음 나중에(첫 번째 작업이 완료되기 전):

$ kill "$job1"
[1]-  Terminated              sleep 77

백그라운드 작업에 대한 자세한 내용을 보고 man bash검색하세요 .JOB CONTROL

(참고: 작업 제어는 모든 본 스타일 쉘에서 거의 동일합니다. 그러나 bash이에 대한 최고의 매뉴얼 페이지 문서는 다음과 같습니다.)

관련 정보