我想从node.js脚本重新启动/关闭我的linux操作系统。我只能找到停止express服务器或脚本中正在运行的函数的方法,而不是关闭/重启我的hole linux的方法。
有没有办法做到这一点?
发布于 2016-06-11 11:56:17
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发布于 2014-04-12 23:41:46
到目前为止,谢谢你。我有一个解决方案,现在就能解决这个问题。只是它没有命令已执行的响应。对于其余部分,它是有效的。
代码:
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);
});发布于 2014-04-12 23:37:21
您应该使用child_process和像sudo /sbin/reboot这样的命令。此外,您还需要配置sudo以允许node.js用户在没有密码提示的情况下运行/sbin/reboot。参见/etc/sudoers。
https://stackoverflow.com/questions/23032149
复制相似问题