쉘 스크립트에서 마지막으로 실행된 명령의 pid를 얻는 방법은 무엇입니까?

쉘 스크립트에서 마지막으로 실행된 명령의 pid를 얻는 방법은 무엇입니까?

다음과 같은 쉘 스크립트를 원합니다.

my-app &
echo $my-app-pid

하지만 방금 실행한 명령의 pid를 얻는 방법을 모르겠습니다.

나는 jobs -p my-app명령을 사용하여 pid를 grep할 수 있다는 것을 알고 있습니다. 그러나 쉘을 여러 번 실행하려는 경우 이 방법은 작동하지 않습니다. 왜냐하면작업 사양모호하다.

답변1

마지막으로 실행된 명령의 PID는 다음 위치에 있습니다.$!쉘 변수:

my-app &
echo $!

답변2

얻다 PID:

#!/bin/bash
my-app &
echo $!

PID변수에 저장 :

#!/bin/bash
my-app &
export APP_PID=$!

모든 인스턴스를 PID텍스트 파일에 저장합니다.

#!/bin/bash
my-app &
echo $! >>/tmp/my-app.pid

출력, 오류를 PID별도의 파일로 저장:

#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log &
echo $! >>/tmp/my-app.pid

echo "my-app PID's: $(cat /tmp/my-app.pid)"

답변3

다음과 같은 것을 시도해보세요

pidof my_app >> /tmp/my_app.pid

답변4

다음과 같이 시도해 보세요.

 ps ef | grep "[m]y-app" | awk '{print $2}'

프로세스의 첫 글자를 사이에 넣으면 해당 프로세스가 목록에 추가 [ ]되지 않습니다 . grep필요한 경우 사용자 이름을 grep할 수도 있습니다.

관련 정보