【发布时间】:2014-05-26 18:19:28
【问题描述】:
我想从 node.js 脚本重新启动/关闭我的 linux 操作系统。只有我能找到的东西是停止快速服务器或脚本中正在运行的函数的方法,而不是关闭/重启我的洞 linux 的方法。
有什么办法吗?
【问题讨论】:
我想从 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
添加以下行并将下面 sn-p 中的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);
});
【讨论】:
sudo的原因。
您应该使用child_process 和sudo /sbin/reboot 之类的命令。您还需要配置 sudo 以允许 node.js 用户在没有密码提示的情况下运行 /sbin/reboot。见/etc/sudoers。
【讨论】:
重新启动包完全符合您的要求,可在此处找到:
【讨论】: