다음과 같은 쉘 스크립트를 원합니다.
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할 수도 있습니다.