我如何从nodejs重启linux

时间:2014-04-12 15:10:43

标签: linux node.js

我想从node.js脚本重启/关闭我的linux操作系统。只有我能找到的方法是在脚本中停止快速服务器或运行功能的方法,而不是关闭/重启我的linux的方法。

有没有办法做到这一点?

4 个答案:

答案 0 :(得分:6)

nodejs命令是:

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

要避免将nodejs作为su运行,您必须授予运行此命令的权限。通过在/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

答案 1 :(得分:4)

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

代码:

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

答案 2 :(得分:0)

您应该使用child_processsudo /sbin/reboot之类的命令。此外,您还需要配置sudo以允许node.js用户运行/sbin/reboot而无需提示密码。见/etc/sudoers

答案 3 :(得分:0)

Reboot包完全符合您的要求,可在此处找到:

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