![](/img/trans.png)
[英]In AngularJS how to modify service property from callback inside service itself
[英]How can I install a linux service from the service itself?
我不是Linux方面的专家,如果我的术语不是100%正确,请对不起。 我有一个运行Debian的嵌入式设备。 设备运行Node.js Web服务器。 该Node.js应用程序与Node可执行文件捆绑在一起,并打包为.deb文件。 该软件包通过包含init.d脚本来定义服务(守护程序?)。 因此,为了更新应用程序,我只需要键入“ dpkg -i my-service.deb”。 Node.js应用程序可以上传debian软件包( .deb)并将其存储在temp文件夹中。
问题:如何从节点应用程序本身内部更新服务(节点可执行文件+节点应用程序)?
...如果我调用child_process.exec(“ dpkg -i new-version-of-my-service.deb”),它将首先停止该服务,然后什么也没有发生。
解决问题的方法如下:
function update_self(deb_package_filename) {
var fileToInstall = path.join(upload_dir, deb_package_filename);
var out = fs.openSync(path.join(upload_dir, 'out.log'), 'a');
var err = fs.openSync(path.join(upload_dir, 'out.log'), 'a');
var child = spawn("dpkg", ["-i", fileToInstall], {
cwd: upload_dir, // working directory
detached: true, // detach from the parent process group
stdio: [ 'ignore', out, err ]
});
child.unref();
}
子进程与调用者分离,因此即使父进程被杀死,dpkg进程仍会运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.