프로세스가 쉘 스크립트를 실행 중인지 확인하는 방법은 무엇입니까?

프로세스가 쉘 스크립트를 실행 중인지 확인하는 방법은 무엇입니까?

프로세스 pid가 주어지면 어떻게 해야 합니까?

  • 프로세스가 쉘 스크립트를 실행하고 있는지 확인하십시오.

  • 그렇다면 스크립트가 실행 중인 하위 프로세스를 어떻게 얻습니까? 통과 pgrep -P <pid>?

감사해요.

답변1

쉘 스크립트를 실행하면 서브쉘이라는 프로세스가 시작됩니다. 메인 셸의 하위 프로세스인 서브셸은 셸 스크립트( batch소위 "배치")에 있는 명령 목록을 실행합니다.

어떤 경우에는 쉘 스크립트를 실행하는 하위 쉘의 프로세스 ID(PID)를 알고 싶을 수도 있습니다.

Bash에서 쉘 스크립트의 서브쉘 프로세스의 PID는 "$$"라는 특수 변수에 저장됩니다. 이 변수는 읽기 전용이며 쉘 스크립트에서 수정할 수 없습니다. 예를 들어:

$ cat xyz.sh
#!/bin/bash
echo "PID of this script: $$"

다음과 같은 출력을 제공합니다

PID of this script: XXXX

Bash 쉘은 다른 여러 읽기 전용 변수를 내보냅니다. 예를 들어 PPID는 하위 셸의 상위 프로세스(즉, 기본 셸)의 프로세스 ID를 저장합니다. UID는 현재 스크립트를 실행 중인 사용자의 사용자 ID를 저장합니다. 이렇게(예제만)

#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $

이것은 출력을 제공합니다

PID of this script: XXXX 
PPID of this script: XXXX 
UID of this script: XXXX

관련 정보