我想从node.js脚本重启/关闭我的linux操作系统。只有我能找到的方法是在脚本中停止快速服务器或运行功能的方法,而不是关闭/重启我的linux的方法。
有没有办法做到这一点?
答案 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_process
和sudo /sbin/reboot
之类的命令。此外,您还需要配置sudo
以允许node.js用户运行/sbin/reboot
而无需提示密码。见/etc/sudoers
。
答案 3 :(得分:0)
Reboot包完全符合您的要求,可在此处找到: