gpt4 book ai didi

node.js - 通过 java 与终端运行进程之间有区别吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:43:38 24 4
gpt4 key购买 nike

我正在编写一个通过 linkedin 的 glu 平台部署的 node.js 应用程序。

启动调用的命令sudo -u <user> node app.js以正确的用户身份启动 Node 应用程序,基本上将此命令存储为字符串并调用 Groovy 的 exec()命令就可以了。

Node 应用程序根据可用的处理器数量使用集群进行 fork ,但基本上它的主要工作是获取一些信息,然后通过 exec() 启动 shell 脚本。 .

有时 shell 脚本会出错,这没关系,但问题是当在 glu 下运行时,有时这些 shell 脚本会因错误而失效,但我应该通过终端使用 sudo -u <user> node app.js 启动 Node 进程吗? ,进程启动正常,shell 进程得到正确清理。

什么会导致行为差异?

最佳答案

是的,有。一种是在 shell 中运行,一种是直接执行。在 shell 中运行它和通过底层 Posix exec(3) 和 co 运行它之间,诸如管道、shell 变量、命令行选项等的处理方式都非常不同。 (即,在 Java 中使用 exec() 不会导致您的进程在系统 shell 中运行。)

您需要使用 popen 的 Java 等价物,运行 bash 并执行您的命令作为参数,或类似的其他东西。

后者与 csh 的一个示例:

Process p = Runtime.getRuntime().exec(new String[]{"csh","-c","cat ~/myfile.txt"});

关于node.js - 通过 java 与终端运行进程之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14177444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com