백그라운드에서 실행 중인 프로세스의 PID를 얻는 방법은 무엇입니까?

백그라운드에서 실행 중인 프로세스의 PID를 얻는 방법은 무엇입니까?

나는 사용하고있다이것백그라운드에서 프로세스를 실행하는 방법입니다.

"$@" &>/dev/null &disown

다음을 어떻게 달성할 수 있습니까?

  1. 배경 가져오기pid
  2. 다른 스크립트에서 사용할 수 있도록 반환하시겠습니까?

답변1

쉘은 가장 최근에 시작된 백그라운드 작업의 프로세스 ID를 사용할 수 있습니다 $!.

예를 들어 파일이나 표준 출력으로 출력할 수 있습니다.

"$@" &>/dev/null &
disown

printf '%d\n' "$!" >background.pid

그러면 다른 스크립트가

./first-script.sh some command line

thepid=$( <background.pid )

또는 첫 번째 스크립트가 단순히 프로세스 ID를 표준 출력으로 인쇄하는 경우 두 번째 스크립트는 다음을 수행할 수 있습니다.

thepid=$( ./first-script.sh some command line )

관련 정보