繁体   English   中英

我如何从nodejs重新启动linux

[英]How do i reboot linux from nodejs

我想从 node.js 脚本重新启动/关闭我的 linux 操作系统。 只有我能找到的东西是停止快速服务器或脚本内正在运行的函数的方法,而不是关闭/重新启动我的洞 linux 的方法。

有什么办法吗?

nodejs 命令是:

require('child_process').exec('sudo /sbin/shutdown -r now', function (msg) { console.log(msg) });

为避免以 su 身份运行 nodejs,您必须授予运行此命令的权限。 通过在 /etc/sudoers.d/ 目录下创建文件来授予权限,例如

$ sudo /etc/sudoers.d/mysudoersfile

添加以下行并将以下代码段中的pi更改为用户 nodejs 将运行为:

pi ALL=/sbin/shutdown
pi ALL=NOPASSWD: /sbin/shutdown

这种技术也可以应用于其他命令。 例如,如果您想允许用户(反过来 nodejs)重新启动网络,则将以下内容添加到您的 sudoers 文件中。

pi ALL=/etc/init.d/networking
pi ALL=NOPASSWD: /etc/init.d/networking

感谢到目前为止。 我现在有一个解决方案。 只是它没有响应该命令已执行。 其余的它正在工作。

代码:

console.log('loaded.....');
var exec = require('child_process').exec;

function execute(command, callback){
    exec(command, function(error, stdout, stderr){ callback(stdout); });
}



execute('shutdown -r now', function(callback){
    console.log(callback);
});

您应该使用child_process和类似sudo /sbin/reboot的命令。 您还需要配置sudo以允许 node.js 用户运行/sbin/reboot w/oa 密码提示。 /etc/sudoers

重新启动包完全符合您的要求,可在此处找到:

https://www.npmjs.com/package/reboot

我使用 Paules 回复和 reboot npm 包文档,现在它按预期工作。

权限(仅限 Linux)

如果要在非超级用户下运行节点进程,请确保授予节点权限以重新启动系统:

sudo setcap CAP_SYS_BOOT=+ep usr/local/bin/node 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM