Bash라는 스크립트가 Script.sh
있으며 자체 PID를 알아야합니다 (예 : Script.sh 내에서 PID를 가져와야 함)
이 방법을 알고 있습니까?
답변
변수 ‘$$’에는 PID가 포함되어 있습니다.
답변
사용 $BASHPID
또는$$
둘 사이의 차이점을 포함하여 자세한 내용은 설명서 를 참조하십시오 .
TL; DRTFM
$$
쉘의 프로세스 ID로 확장합니다.()
서브 쉘 에서는 서브 쉘이 아닌 호출 쉘의 프로세스 ID로 확장됩니다.
$BASHPID
현재 Bash 프로세스의 프로세스 ID로 확장됩니다.- A의
()
서브 쉘, 상기 하부 쉘의 프로세스 ID로 확장
- A의
답변
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 "$!")
답변
