자동화하려고 해요Forever JS는 개발 서버를 계속 실행합니다.이렇게 하려면 영구 프로세스를 확인하고 중지하여 다른 프로세스를 시작해야 합니다. 실행하여
sudo forever list
다음과 같은 결과가 나타납니다.
메시지: 영원히 실행되는 프로세스 데이터: 영원히 uid 명령 스크립트PID ID 로그 파일 가동 시간 데이터: [0] 0NQH /usr/bin/nodejs app.js 17047 17049 /home/ubuntu/.forever/0NQH.log 0:2:4:58.594
위의 출력에서 필요합니다.PID이것은17049현재를 다음과 같이 다음 명령에 입력합니다.
sudo forever stop {{pidfromabove}}
이를 달성하기 위해 내 스크립트에서 주로 두 문자열 사이를 찾으려고 많은 노력을 기울였습니다.application.js그리고/집그러나 어떤 이유로 전체 줄을 계속 인쇄합니다. 나는 sed와 awk의 다양한 조합을 시도했습니다. 다음 명령에 제공하기 위해 위에서 pid를 어떻게 얻을 수 있습니까 stop
?
답변1
이것은 의 사용 사례처럼 보입니다 awk
. 관심 있는 PID가 항상 행의 7번째 요소가 되도록 출력 형식이 안정적이라고 확신하는 경우 PID가 인쇄됩니다 app.js
.
sudo forever list | awk '/app\.js/ { print $7 }'
답변2
당신이 겪고 있는 문제는 아마도 출력이 stdout이 아닌 stderr에 있기 때문일 것입니다. 이 경우 다음을 시도해 볼 수 있습니다.
sudo forever list 2>&1 | sed 's/.*app.js [0-9]* \([0-9]*\) /\1/'
두 번째 PID에만 응답해야 합니다.
그러면 다음과 같이 할 수 있습니다:
sudo forever stop `sudo forever list 2>&1 | sed 's/.*app.js [0-9]* \([0-9]*\) /\1/'`