ホームページ  >  記事  >  ウェブフロントエンド  >  Node.jsを使用してデーモンプログラムを実装する方法

Node.jsを使用してデーモンプログラムを実装する方法

PHPz
PHPzオリジナル
2023-04-17 15:15:39786ブラウズ

Daemon はバックグラウンドで実行されるプログラムで、通常はユーザーによる直接操作を必要としない、長時間実行されるサービスに使用されます。 Node.js では、いくつかの簡単な方法でデーモン プログラムを実装できます。この記事では、Node.jsを使ってデーモンプログラムを実装する方法を紹介します。

実装

child_process の spawn メソッドを使用して、Node.js でプロセスを作成できます。この処理をバックグラウンドで実行することでデーモンプログラムを実装することができます。実装手順は次のとおりです。

  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();

上記のコードでは、spawn メソッドを使用して子プロセスを作成します。ここで、最初のパラメータは Node.js の実行可能ファイルのパスです。 2 番目のパラメータはメイン プログラムへのパスで、3 番目のパラメータにはサブプロセスを作成するためのオプションが含まれます。このうち、detached は true に設定され、子プロセスをメイン プロセスから分離します。つまり、子プロセスは別のプロセスとして実行されます。stdio は、子プロセスの標準入出力が無視されることを示すために「ignore」に設定されます。メインプロセスに拘束されません。

unref() メソッドは、作成されたサブプロセスをメイン プロセスから分離できます。つまり、メイン プロセスが終了しても、サブプロセスは引き続き実行されます。

  1. メイン プログラムをバックグラウンドで実行するには、次のコマンドを使用できます。
nohup node main.js > /dev/null 2>&1 &

上記のコマンドでは、メイン プログラムの実行に nohup コマンドが使用されています。 「> ; /dev/null 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

上記のファイルでは、Description フィールドはサービスの説明に使用され、ExecStart フィールドは起動を指定します。サービスのコマンド、つまり Node .js スクリプトの実行、Restart フィールドはサービスの再起動戦略を指定、User フィールドと Group フィールドはサービスが実行されるユーザーとユーザー グループを指定、StandardOutput フィールドと StandardError フィールドはそれぞれ、システム ログへのサービスの出力。SyslogIdentifier フィールドは、ログ内のシステム識別子のサービスを指定します。

  1. mydaemon.service ファイルを /systemd/system/ ディレクトリにコピーし、次のコマンドを実行します。
sudo systemctl daemon-reload
sudo systemctl enable mydaemon
sudo systemctl start mydaemon

最初のコマンドは、systemd をリロードするために使用されます。構成。2 番目のコマンドは起動時にサービスが自動的に開始するように設定するために使用され、3 番目のコマンドはサービスを開始するために使用されます。

概要

この記事では、Node.js を使用してデーモン プログラムを実装する方法を紹介します。これには、spawn メソッドによる子プロセスの作成、バックグラウンドでのプログラムの実行、およびとして実行する方法が含まれます。システムサービス。これらの方法を使用すると、メイン プログラムが終了しても実行を継続できる、長時間実行されるプログラムを実装できます。

以上がNode.jsを使用してデーモンプログラムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。