본문으로 바로가기

 

기존 환경

node 설치 후 코드를 crontab 에 스케줄링 등록한 경우,

node 명령어를 절대 경로로 기입해야 하기 때문에 아래와 같은 형태일 것이다.

 

console
[root@Quick141-75 ~]# crontab -l
00 01,02 * * * /usr/bin/node /root/nodejs/db_sync.js >> /root/nodejs/result.txt

이 상태로 운영 중에 nvm 을 통해서 node 버전을 변경(업그레이드)하였다면 후속 조치가 필요하다.

node 버전 변경 후

경로 확인

console
[root@Quick141-75 ~]# which node
/root/.nvm/versions/node/v11.0.0/bin/node
[root@Quick141-75 ~]# type node
node is /root/.nvm/versions/node/v11.0.0/bin/node
[root@Quick141-75 ~]# whereis node
node: /usr/bin/node /usr/include/node /usr/share/node /usr/share/man/man1/node.1.gz

which, type, whereis 등의 명령어로 확인해 보면, 변경한 node 명령어는 /root/.nvm 하위 경로에 위치하고 있다.

즉, 현재 /usr/bin/node 파일은 업그레이드한 node 명령어가 아니다.

파일별 경로 확인

console
[root@Quick141-75 ~]# /usr/bin/node -v
v0.10.48
[root@Quick141-75 ~]# /root/.nvm/versions/node/v11.0.0/bin/node -v
v11.0.0
[root@Quick141-75 ~]# node -v
v11.0.0

조치 방법

crontab 에 스케줄링 설정된 node 명령어의 경로를 교체한다.

 

console
[root@Quick141-75 ~]# crontab -l
00 01,02 * * * /root/.nvm/versions/node/v11.0.0/bin/node /root/nodejs/db_sync.js >> /root/nodejs/result.txt

또는 /usr/bin/node 파일 자체를 교체하거나 심볼릭 링크하는 방법이 있다.