0
Java 프로그램을 시작한 System V init 스크립트가 있습니다. 어떤 이유로 PID 파일이 생성 될 때마다 하나가 아닌 여러 개의 PID가 포함됩니다.PID 파일에 여러 개의 PID가 저장되는 경우
daemon --pidfile=$pidfile "$JAVA_CMD &" >> $logfile 2>&1
RETVAL=$?
usleep 500000
if [ $RETVAL -eq 0 ]; then
touch "$lock"
PID=$(ps aux | grep -vE 'grep|runuser|bash' | grep <myservice> | awk '{print $2}')
echo $PID > $pidfile
내가 수동으로 ps aux...
명령을 테스트 할 때, 한 줄의 반환 :
다음은 서비스를 시작하고 PID 파일에 기록하는 관련 코드입니다. 스크립트로 실행하면이 호출이 여러 PID를 반환하는 것처럼 보입니다.
PID 파일의 내용 예 : 16601 16602 16609 16619 16690
. 16619
은 위에서 언급 한 ps aux...
명령을 수동으로 실행할 때 발견되는 실제 프로세스 ID입니다.
난 당신이 마지막 awk 명령을 제거하고 무슨 일이 일어나고 있는지 확인하는 것이 좋을 것 ... –
당신은'pid'를 받고에만 관심이 있습니다. 'ps '대신'pgrep'을 사용하십시오. 'pid'를 반환합니다. 'PID = $ (pgrep -f)'을 시도해보십시오. 또는 지름길을 이용하십시오. '$ PID'에 할당하지 마십시오. 'pgrep -f > $ pidfile'을 시도해보십시오. –
alvits