종료 후 프로세스를 자동으로 다시 시작

종료 후 프로세스를 자동으로 다시 시작

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

관련 정보