그래서 나는 소스로 실행하는 작은 스크립트를 가지고 있고(관심 있는 분들을 위해 스크립트를 실행하는 사람에 대해 올바른 $SECONDS 값을 얻기 위해 이 작업을 수행합니다) 프로그램을 백그라운드에 둡니다. 이 스크립트에는 임시 파일을 업데이트하기 위해 매초 실행되는 무한 루프가 있습니다.
그래서 제 질문은 임시 파일/스크립트의 업데이트를 종료하기 위해 종료해야 하는 스크립트 내 루프의 PID를 어떻게 얻느냐는 것입니다.
답변1
받아보시면 실제로는 별도의 스크립트가 아닙니다. 이는 마치 소스의 모든 라인이 호출되는 소스/위치/스크립트에 존재하는 것과 같습니다.
루프에는 PID가 없습니다. 전경에 있는 경우 현재 PID에서 작동합니다. 그러나 이를 백그라운드로 보내면 작업이 자체 PID를 얻습니다. 다음을 사용하여 얻을 수 있습니다.
do-something-in-a-loop & pid=$!
작업에 대한 작업 사양을 알고 있으면 이를 사용할 수도 있습니다. 직업이 하나뿐이라면 할 수 있습니다
kill %1
.
답변2
간단히 말해서, 루프는 별도의 프로세스에서 실행되지 않기 때문에 자체 PID를 갖지 않습니다. 즉, 루프의 PID는 스크립트의 PID입니다.
보다 유용한 답변을 얻으려면 실제 코드를 게시하십시오.