Linux/Unix Bash 스크립트는 어떻게 자체 PID를 가져올 수 있습니까?
나는 바시에서 불리는 대본이 있습니다.Script.sh자신의 PID를 알아야 합니다.다시 말해서, 나는 내부에 PID를 얻어야 합니다.Script.sh.
어떻게 하는지 아세요?
변수$$PID를 포함합니다.
사용하다$BASHPID또는$$
두 가지 차이점을 포함한 자세한 내용은 [매뉴얼][1]을 참조하십시오.
TL;DRTM
$$셸의 프로세스 ID로 확장합니다.- 인어
()서브셸은 서브셸이 아닌 호출 셸의 프로세스 ID로 확장됩니다.
- 인어
$BASHPID현재 Bash 프로세스의 프로세스 ID(Bash 4에 새로 추가됨)로 확장합니다.- 인어
()하위 셸, 하위 셸의 프로세스 ID로 확장 [1]: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Variables
- 인어
Jefromi에서 참조한 고급 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 "$!")
사용자가 어디에 있든(대화형 명령줄 또는 스크립트에서) $BASHPID에 액세스할 수 없는 경우 다음을 사용하여 현재 셸 pid에 액세스할 수 있습니다.
bash - c 'echo $PPID'
여기서 단순 따옴표는 조기 문자열 해석을 방지하는 데 필수적입니다(해석이 현재가 아닌 하위 프로세스에서 발생하는지 확인하기 위해).원칙은 자식 프로세스를 만들고 부모 pid, 즉 "나 자신"을 요청하는 것입니다.이 코드는 ps 기반의 Joakim 솔루션보다 간단합니다.
언급URL : https://stackoverflow.com/questions/2493642/how-can-a-linux-unix-bash-script-get-its-own-pid
'programing' 카테고리의 다른 글
| Postgre의 하위 쿼리에서 업데이트 또는 삽입(여러 행 및 열)SQL (0) | 2023.05.09 |
|---|---|
| MongoDB - 컬렉션 내부의 중첩된 항목을 쿼리하는 방법은 무엇입니까? (0) | 2023.05.09 |
| Eclipse에서 특정 폴더 또는 파일을 유효성 검사에서 제외하는 방법은 무엇입니까? (0) | 2023.05.09 |
| PyMongo를 사용하여 Pandas 데이터 프레임을 mongodb에 삽입합니다. (0) | 2023.05.09 |
| 동일한 종속 어셈블리의 서로 다른 버전 간에 해결할 수 없는 충돌이 발견되었습니다. (0) | 2023.05.09 |