nodejs에서 실행되는 자바스크립트 프로그램이 있습니다. 다음 명령을 실행하면:
node app.js
계속 실행되지만 때로는 종료됩니다. 하지만 종료되면 자동으로 다시 시작하고 싶습니다.
Linux에서 이 작업을 수행하는 명령이 있습니까? cron 작업을 사용하고 싶지 않습니다.
답변1
빠르고 더러운 방법:bash를 사용한다면 간단한 bash 스크립트는 어떻습니까?
#!/usr/bin/bash
while true
do
node app.js
done
그런데 작업이 종료된 이유와 합당한 이유가 있을 수 있는 이유를 고려하지 않았기 때문에 이는 잘못된 동작입니다.아니요다시 시작하세요. 시작 시 충돌이 발생하여 사망할 수도 있습니다...
체계적인 Linux에서 보다 표준화된 방식:(@Kusalananda의 의견의 일부로 제안되었으며 다음에서 영감을 얻었습니다.Linux에 노드 애플리케이션을 배포하기 위한 최종 가이드):
app.js가 #!/usr/bin/env node
선언으로 시작하고 app.js 파일이 실행 가능으로 표시되었다고 가정하면,
새 서비스 설계: 시스템 전체에 필요하거나 다음과 같이 사용자에게만 필요한 경우 /etc/systemd/system
디렉터리에 .service 파일을 만듭니다 .~/.config/systemd/user
[Unit]
Description= #(Whatever String You Want)
After= #(Any service that should be started before, ex. network.target)
[Service]
ExecStart= #(Key in the absolute path of app.js)
Restart=always #(This will ensure the automatic restart)
User= #(TBD depending on your system & wishes)
Group= #(TBD depending on your system & wishes)
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory= # (Absolute path of app.js working dir.)
[Install]
WantedBy= # multi-user.target or default.target according to your needs
이제 시작할 수 있습니다:systemctl --user start service_filename