> 웹 프론트엔드 > 프런트엔드 Q&A > Node.js를 사용하여 데몬 프로그램을 구현하는 방법

Node.js를 사용하여 데몬 프로그램을 구현하는 방법

PHPz
풀어 주다: 2023-04-17 16:11:51
원래의
796명이 탐색했습니다.

데몬은 백그라운드에서 실행되는 프로그램으로, 일반적으로 사용자의 직접 작업이 필요하지 않은 장기 실행 서비스에 사용됩니다. Node.js에서는 몇 가지 간단한 방법을 통해 데몬 프로그램을 구현할 수 있습니다. 이번 글에서는 Node.js를 사용하여 데몬 프로그램을 구현하는 방법을 소개하겠습니다.

Implementation

Node.js에서 프로세스를 생성하려면 child_process의 생성 메서드를 사용할 수 있습니다. 이 프로세스를 백그라운드에서 실행함으로써 데몬 프로그램을 구현할 수 있습니다. 구현 단계는 다음과 같습니다.

  1. 데몬 프로그램의 메인 프로그램인 Node.js 스크립트를 생성합니다. 이는 다음 코드를 사용하여 달성할 수 있습니다.
const spawn = require('child_process').spawn;

const child = spawn(process.argv[0], process.argv.slice(2), {
    detached: true,
    stdio: 'ignore'
});

child.unref();
로그인 후 복사

위 코드에서 generate 메소드는 하위 프로세스를 생성하는 데 사용됩니다. 여기서 첫 번째 매개변수는 Node.js의 실행 파일 경로이고 두 번째 매개변수는 Node.js의 경로입니다. 기본 프로그램, 세 가지 매개변수에는 하위 프로세스를 생성하기 위한 옵션이 포함되어 있습니다. 그 중 detached는 true로 설정되어 하위 프로세스를 메인 프로세스와 분리합니다. 즉, 하위 프로세스가 별도의 프로세스로 실행됩니다. stdio는 하위 프로세스의 표준 입력 및 출력이 다음과 같음을 나타내기 위해 'ignore'로 설정됩니다. 메인 프로세스에 바인딩되지 않습니다.

unref() 메서드는 생성된 하위 프로세스를 기본 프로세스에서 분리할 수 있습니다. 즉, 기본 프로세스가 종료되더라도 하위 프로세스는 계속 실행됩니다.

  1. 메인 프로그램을 백그라운드에서 실행하려면 다음 명령을 사용하면 됩니다.
nohup node main.js > /dev/null 2>&1 &
로그인 후 복사

위 명령에서는 nohup 명령을 사용하여 백그라운드에서 메인 프로그램을 실행하고 '> 2>&1 &'는 프로그램 출력을 /dev/null로 리디렉션하여 콘솔에 표시되지 않도록 함을 의미합니다.

  1. 메인 프로그램을 시스템 서비스로 실행하세요. pm2나 systemd를 사용할 수 있습니다. 이 문서에서는 systemd를 예로 사용합니다. 먼저 다음 내용으로 mydaemon.service라는 파일을 만듭니다.
[Unit]
Description=My Daemon

[Service]
ExecStart=/usr/bin/node /path/to/main.js
Restart=always
User=<your_username>
Group=<your_group>
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mydaemon

[Install]
WantedBy=multi-user.target
로그인 후 복사

위 파일에서 설명 필드는 서비스를 설명하는 데 사용됩니다. ExecStart 필드는 노드를 실행하는 서비스의 시작 명령을 지정합니다. .js 스크립트, 다시 시작 필드 서비스의 다시 시작 정책은 각각 서비스가 실행되는 사용자 및 사용자 그룹을 지정합니다. StandardOutput 및 StandardError 필드는 각각 서비스 출력을 시스템 로그로 리디렉션합니다. ; SyslogIdentifier 필드는 시스템 로그의 서비스 식별자를 지정합니다.

  1. mydaemon.service 파일을 /systemd/system/ 디렉터리에 복사한 후 다음 명령을 실행합니다.
sudo systemctl daemon-reload
sudo systemctl enable mydaemon
sudo systemctl start mydaemon
로그인 후 복사

첫 번째 명령은 systemd 구성을 다시 로드하는 데 사용되고 두 번째 명령은 서비스를 설정하는 데 사용됩니다. 자동으로 시작하려면 세 번째 명령을 사용하여 서비스를 시작합니다.

Summary

이 글에서는 Spawn 메서드를 통해 자식 프로세스를 생성하고, 프로그램을 백그라운드에서 실행하고, 시스템 서비스로 실행하는 등 Node.js를 사용하여 데몬 프로그램을 구현하는 방법을 소개합니다. 이러한 방법을 통해 주 프로그램이 종료되어도 계속 실행될 수 있는 장기 실행 프로그램을 구현할 수 있습니다.

위 내용은 Node.js를 사용하여 데몬 프로그램을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿