[bash] Linux / Unix Bash 스크립트는 자체 PID를 어떻게 알 수 있습니까?

Bash라는 스크립트가 Script.sh있으며 자체 PID를 알아야합니다 (예 : Script.sh 내에서 PID를 가져와야 함)

이 방법을 알고 있습니까?



답변

변수 ‘$$’에는 PID가 포함되어 있습니다.


답변

사용 $BASHPID또는$$

둘 사이의 차이점을 포함하여 자세한 내용은 설명서 를 참조하십시오 .

TL; DRTFM

  • $$ 쉘의 프로세스 ID로 확장합니다.
    • ()서브 쉘 에서는 서브 쉘이 아닌 호출 쉘의 프로세스 ID로 확장됩니다.
  • $BASHPID 현재 Bash 프로세스의 프로세스 ID로 확장됩니다.
    • A의 ()서브 쉘, 상기 하부 쉘의 프로세스 ID로 확장

답변

Jefromi가 참조한 Advanced Bash 스크립팅 안내서에 제공된 예제 외에도이 예제는 파이프가 서브 쉘을 작성하는 방법을 보여줍니다.

$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656


답변

PID는에 저장됩니다 $$.

예 : kill -9 $$호출 된 쉘 인스턴스를 종료합니다.


답변

$$변수 를 사용할 수 있습니다 .


답변

프로세스가 하위 프로세스이고 $ BASHPID가 설정되지 않은 경우 실행중인 프로세스의 작성된 하위 프로세스의 ppid를 조회 할 수 있습니다. 약간 추한 것일 수도 있지만 작동합니다. 예:

sleep 1 &
mypid=$(ps -o ppid= -p "$!")


답변