소스를 통해 실행 중인 백그라운드 프로세스의 PID를 가져옵니다.

소스를 통해 실행 중인 백그라운드 프로세스의 PID를 가져옵니다.

그래서 나는 소스로 실행하는 작은 스크립트를 가지고 있고(관심 있는 분들을 위해 스크립트를 실행하는 사람에 대해 올바른 $SECONDS 값을 얻기 위해 이 작업을 수행합니다) 프로그램을 백그라운드에 둡니다. 이 스크립트에는 임시 파일을 업데이트하기 위해 매초 실행되는 무한 루프가 있습니다.

그래서 제 질문은 임시 파일/스크립트의 업데이트를 종료하기 위해 종료해야 하는 스크립트 내 루프의 PID를 어떻게 얻느냐는 것입니다.

답변1

  1. 받아보시면 실제로는 별도의 스크립트가 아닙니다. 이는 마치 소스의 모든 라인이 호출되는 소스/위치/스크립트에 존재하는 것과 같습니다.

  2. 루프에는 PID가 없습니다. 전경에 있는 경우 현재 PID에서 작동합니다. 그러나 이를 백그라운드로 보내면 작업이 자체 PID를 얻습니다. 다음을 사용하여 얻을 수 있습니다.

    do-something-in-a-loop & pid=$!

  3. 작업에 대한 작업 사양을 알고 있으면 이를 사용할 수도 있습니다. 직업이 하나뿐이라면 할 수 있습니다 kill %1.

답변2

간단히 말해서, 루프는 별도의 프로세스에서 실행되지 않기 때문에 자체 PID를 갖지 않습니다. 즉, 루프의 PID는 스크립트의 PID입니다.

보다 유용한 답변을 얻으려면 실제 코드를 게시하십시오.

관련 정보