首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从nodejs重启linux

如何从nodejs重启linux
EN

Stack Overflow用户
提问于 2014-04-12 23:10:43
回答 4查看 12.9K关注 0票数 8

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

有没有办法做到这一点?

EN

回答 4

Stack Overflow用户

发布于 2016-06-11 11:56:17

nodejs命令为:

代码语言:javascript
复制
require('child_process').exec('sudo /sbin/shutdown -r now', function (msg) { console.log(msg) });

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

代码语言:javascript
复制
$ sudo /etc/sudoers.d/mysudoersfile

添加以下行,并将以下代码片断中的pi更改为用户nodejs将以用户身份运行:

代码语言:javascript
复制
pi ALL=/sbin/shutdown
pi ALL=NOPASSWD: /sbin/shutdown

此技术也可应用于其他命令。例如,如果您希望允许用户(依次是nodejs)重新启动网络,则将以下内容添加到sudoers文件中。

代码语言:javascript
复制
pi ALL=/etc/init.d/networking
pi ALL=NOPASSWD: /etc/init.d/networking
票数 10
EN

Stack Overflow用户

发布于 2014-04-12 23:41:46

到目前为止,谢谢你。我有一个解决方案,现在就能解决这个问题。只是它没有命令已执行的响应。对于其余部分,它是有效的。

代码:

代码语言:javascript
复制
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);
});
票数 4
EN

Stack Overflow用户

发布于 2014-04-12 23:37:21

您应该使用child_process和像sudo /sbin/reboot这样的命令。此外,您还需要配置sudo以允许node.js用户在没有密码提示的情况下运行/sbin/reboot。参见/etc/sudoers

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23032149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档