cron을 통해 Node.js를 시작하면 자동으로 실패합니다.

cron을 통해 Node.js를 시작하면 자동으로 실패합니다.

현재 서버가 다운될 때마다 서버를 시작하는 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

  1. 전체 경로를 제공하지 않았습니다 /home/pi/project/serveronly/index.js. 초기 슬래시가 누락되어 노드 프로그램이 스크립트를 찾을 수 없습니다.

  2. 주문하다홈 디렉토리의 파일을 성공적으로 덮어썼습니다. home/pi/project/node.log아마도 이것이 의미하는 바일 것입니다 project.log. 네가 원한다면추가의이 로그에는 하나 대신 두 개의 보다 큼 기호를 사용하십시오.

대신 이것을 사용하겠습니다.

/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log

관련 정보