Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk melaksanakan program Daemon menggunakan Node.js

Bagaimana untuk melaksanakan program Daemon menggunakan Node.js

PHPz
PHPzasal
2023-04-17 15:15:39783semak imbas

Daemon ialah program yang berjalan di latar belakang, biasanya digunakan untuk perkhidmatan jangka panjang yang tidak memerlukan operasi pengguna langsung. Dalam Node.js, anda boleh melaksanakan program Daemon melalui beberapa kaedah mudah. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Node.js untuk melaksanakan program Daemon.

Pelaksanaan

Dalam Node.js, anda boleh menggunakan kaedah spawn child_process untuk mencipta proses. Dengan meletakkan proses ini berjalan di latar belakang, program Daemon boleh dilaksanakan. Berikut ialah langkah pelaksanaan:

  1. Buat skrip Node.js, yang merupakan atur cara utama program Daemon. Ini boleh dicapai menggunakan kod berikut:
const spawn = require('child_process').spawn;

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

child.unref();

Dalam kod di atas, kaedah spawn digunakan untuk mencipta proses anak, di mana parameter pertama ialah laluan fail boleh laku Node.js , dan yang kedua Parameter ialah laluan ke program utama, dan parameter ketiga mengandungi pilihan untuk mencipta subproses. Antaranya, detached ditetapkan kepada benar untuk memisahkan proses kanak-kanak daripada proses utama, iaitu, proses kanak-kanak berjalan sebagai proses berasingan ditetapkan kepada 'abaikan' untuk menunjukkan bahawa input dan output standard proses kanak-kanak itu; tidak terikat dengan proses utama. Kaedah

unref() boleh memisahkan subproses yang dibuat daripada proses utama, iaitu, apabila proses utama keluar, subproses masih akan terus berjalan.

  1. Untuk menjalankan program utama di latar belakang, anda boleh menggunakan arahan berikut:
nohup node main.js > /dev/null 2>&1 &

Dalam arahan di atas, arahan nohup digunakan untuk menjalankan program utama di latar belakang, dan '> /dev/null 2>&1 &' bermaksud mengubah hala keluaran program ke /dev/null supaya ia tidak dipaparkan pada konsol.

  1. Jalankan program utama sebagai perkhidmatan sistem, anda boleh menggunakan pm2 atau systemd. Dalam artikel ini, systemd digunakan sebagai contoh. Mula-mula, buat fail bernama mydaemon.service dengan kandungan berikut:
[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

Dalam fail di atas, medan Penerangan digunakan untuk menerangkan perkhidmatan; medan ExecStart menentukan arahan permulaan perkhidmatan, iaitu Laksanakan skrip Node.js, medan Mulakan semula menentukan strategi mulakan semula perkhidmatan; perkhidmatan kepada log sistem; medan SyslogIdentifier menentukan Pengecam perkhidmatan dalam log sistem.

  1. Salin fail mydaemon.service ke direktori /systemd/system/, dan kemudian laksanakan arahan berikut:
sudo systemctl daemon-reload
sudo systemctl enable mydaemon
sudo systemctl start mydaemon

Arahan pertama digunakan untuk memuat semula Systemd Configuration, arahan kedua digunakan untuk menetapkan perkhidmatan supaya bermula secara automatik semasa but, dan arahan ketiga digunakan untuk memulakan perkhidmatan.

Ringkasan

Artikel ini memperkenalkan kaedah menggunakan Node.js untuk melaksanakan program Daemon, termasuk mencipta proses anak melalui kaedah spawn, menjalankan program di latar belakang dan menjalankannya sebagai perkhidmatan sistem. Melalui kaedah ini, anda boleh melaksanakan program jangka panjang yang boleh terus berjalan apabila program utama keluar.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan program Daemon menggunakan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn