我正在运行两个命令
indexer idx_name --rotate
indexer idx_name --buildstops dict_file 10
从命令行运行这些命令时,一切都很好。但是,当我使用 exec 通过我的节点应用程序传递这两个命令时,第一个命令成功运行,而第二个命令则没有生成dict_file。
我尝试了一些与sudo的组合,但它没有帮助。我从这两种方式(节点和shell)检查了 stdout ,它看起来一样。
这是我的节点js代码:
var exec = require('child_process').exec;
var cmd = 'indexer idx_name --rotate && indexer idx_name --buildstops dict_file 10';
exec(cmd, function(err, stdout, stderr) {
console.log(stdout);
});
我有什么遗失的吗?
答案 0 :(得分:0)
哪个用户正在运行节点,需要获得写dict_file
的权限。
甚至可能更容易删除文件,让它由合适的用户通过节点创建(假设用户可以写文件夹)
Sudo也可以工作,但需要确保用户运行节点,具有sudo权限。排序绝对超出stackoverflow的范围。
...还要检查你在正确的地方看。在您的示例中,您不显示路径,因此将在当前工作目录中创建文件dict_file
(不确定节点如何配置)