ホームページ > 記事 > ウェブフロントエンド > Node.jsを使用してデーモンプログラムを実装する方法
Daemon はバックグラウンドで実行されるプログラムで、通常はユーザーによる直接操作を必要としない、長時間実行されるサービスに使用されます。 Node.js では、いくつかの簡単な方法でデーモン プログラムを実装できます。この記事では、Node.jsを使ってデーモンプログラムを実装する方法を紹介します。
実装
child_process の spawn メソッドを使用して、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() メソッドは、作成されたサブプロセスをメイン プロセスから分離できます。つまり、メイン プロセスが終了しても、サブプロセスは引き続き実行されます。
nohup node main.js > /dev/null 2>&1 &
上記のコマンドでは、メイン プログラムの実行に nohup コマンドが使用されています。 「> ; /dev/null 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
上記のファイルでは、Description フィールドはサービスの説明に使用され、ExecStart フィールドは起動を指定します。サービスのコマンド、つまり Node .js スクリプトの実行、Restart フィールドはサービスの再起動戦略を指定、User フィールドと Group フィールドはサービスが実行されるユーザーとユーザー グループを指定、StandardOutput フィールドと StandardError フィールドはそれぞれ、システム ログへのサービスの出力。SyslogIdentifier フィールドは、ログ内のシステム識別子のサービスを指定します。
sudo systemctl daemon-reload sudo systemctl enable mydaemon sudo systemctl start mydaemon
最初のコマンドは、systemd をリロードするために使用されます。構成。2 番目のコマンドは起動時にサービスが自動的に開始するように設定するために使用され、3 番目のコマンドはサービスを開始するために使用されます。
概要
この記事では、Node.js を使用してデーモン プログラムを実装する方法を紹介します。これには、spawn メソッドによる子プロセスの作成、バックグラウンドでのプログラムの実行、およびとして実行する方法が含まれます。システムサービス。これらの方法を使用すると、メイン プログラムが終了しても実行を継続できる、長時間実行されるプログラムを実装できます。
以上がNode.jsを使用してデーモンプログラムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。