현재 서버가 다운될 때마다 서버를 시작하는 cronjob을 설정하려고 합니다.
이를 위해 노드 서버를 테스트하고 시작하는 간단한 스크립트를 작성했습니다.
#!/bin/bash
ts=$(date +%T)
if pgrep -f "node"
then
echo $ts": node running"
else
echo $ts": node not running"
'/usr/bin/node' '/home/pi/project/serveronly/index.js' > '/home/pi/project/node.log'
fi
해당 crontab은 다음과 같습니다.
m h dom mon dow command
* * * * * /home/pi/project/sanity_check.sh >> /home/pi/project/cron.log 2&>1
내 로깅에는 다음이 표시됩니다. 스크립트를 시작하면 서버가 시작되고 node.js 출력이 올바르게 기록됩니다.
cron에 의해 시작된 스크립트의 경우 다음과 같습니다. node.js
인스턴스가 현재 실행 중이면 인스턴스를 감지하고 그에 따라 기록합니다. 감지되지 않으면 올바르게 로그인되지만 cron.log
아무 것도 로그인되지 않으며 node.log
서버가 시작되지 않습니다.
답변1
전체 경로를 제공하지 않았습니다
/home/pi/project/serveronly/index.js
. 초기 슬래시가 누락되어 노드 프로그램이 스크립트를 찾을 수 없습니다.주문하다예홈 디렉토리의 파일을 성공적으로 덮어썼습니다.
home/pi/project/node.log
아마도 이것이 의미하는 바일 것입니다project.log
. 네가 원한다면추가의이 로그에는 하나 대신 두 개의 보다 큼 기호를 사용하십시오.
대신 이것을 사용하겠습니다.
/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log