데몬은 백그라운드에서 실행되는 프로그램으로, 일반적으로 사용자의 직접 작업이 필요하지 않은 장기 실행 서비스에 사용됩니다. Node.js에서는 몇 가지 간단한 방법을 통해 데몬 프로그램을 구현할 수 있습니다. 이번 글에서는 Node.js를 사용하여 데몬 프로그램을 구현하는 방법을 소개하겠습니다.
Implementation
Node.js에서 프로세스를 생성하려면 child_process의 생성 메서드를 사용할 수 있습니다. 이 프로세스를 백그라운드에서 실행함으로써 데몬 프로그램을 구현할 수 있습니다. 구현 단계는 다음과 같습니다.
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() 메서드는 생성된 하위 프로세스를 기본 프로세스에서 분리할 수 있습니다. 즉, 기본 프로세스가 종료되더라도 하위 프로세스는 계속 실행됩니다.
nohup node main.js > /dev/null 2>&1 &
위 명령에서는 nohup 명령을 사용하여 백그라운드에서 메인 프로그램을 실행하고 '> 2>&1 &'는 프로그램 출력을 /dev/null로 리디렉션하여 콘솔에 표시되지 않도록 함을 의미합니다.
[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 필드는 시스템 로그의 서비스 식별자를 지정합니다.
sudo systemctl daemon-reload sudo systemctl enable mydaemon sudo systemctl start mydaemon
첫 번째 명령은 systemd 구성을 다시 로드하는 데 사용되고 두 번째 명령은 서비스를 설정하는 데 사용됩니다. 자동으로 시작하려면 세 번째 명령을 사용하여 서비스를 시작합니다.
Summary
이 글에서는 Spawn 메서드를 통해 자식 프로세스를 생성하고, 프로그램을 백그라운드에서 실행하고, 시스템 서비스로 실행하는 등 Node.js를 사용하여 데몬 프로그램을 구현하는 방법을 소개합니다. 이러한 방법을 통해 주 프로그램이 종료되어도 계속 실행될 수 있는 장기 실행 프로그램을 구현할 수 있습니다.
위 내용은 Node.js를 사용하여 데몬 프로그램을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!