【发布时间】:2018-01-24 15:33:01
【问题描述】:
我有一个 nodejs 应用程序,它应该在我打开机器时启动(我使用的是 Linux Ubuntu 16.04,所以我将它放在 rc.local 中)。我的应用程序使用 raw-socket 包。
由于我的应用程序无法以 root 身份运行,因此我在 rc.local 中设置:
sudo -u myuser node myapp.js &
当我的应用程序调用“new raw-socket”时,出现错误:
Operation not permitted.
我尝试了不同的方法,例如“setcap”,但它们对我不起作用。
此外,如果我在加载操作系统后尝试运行我的应用程序,该应用程序可以完美运行,没有任何问题......
我是否应该在 rc.local 中添加一些内容....我错过了什么吗?
【问题讨论】:
-
也许 Node.js 运行时假设某些核心进程在启动时尚未初始化时正在运行?
-
什么意思?
-
这只是一个猜测。在您edit 您的问题包括错误日志的实际堆栈跟踪以及您的
myapp.js文件的相关部分之前,很难说发生了什么。 -
不幸的是 myapp 非常庞大和复杂...我不明白为什么当系统启动时它可以完美运行...我也尝试将 myuser 设置为 root(使用 visudo)但它总是崩溃
-
当系统已经启动后,是否必须以root身份运行才能运行?
标签: node.js raw-sockets