pm2进程在复活时使用旧的系统环境变量
pm2 process using the old system Environment Variables on resurrection
我创建了一个节点应用程序,用于订阅 OPC-UA 服务器并将数据存储在我们的 s3 存储桶中。为此,我正在使用 node-opcua 模块。
我正在通过 RDP 在 Windows 服务器上工作,node-opcua
模块在 %LOCALAPPDATA%\Temp
下创建一些文件作为过程的一部分并使用它。我正在使用 pm2
到 运行 应用程序,它通过进程本身动态生成的 TMP
和 TEMP
环境变量获取这些文件的路径。
当 Windows 服务器重新启动时,它会删除这些文件并更新新文件的位置。我已经有了 运行 pm2 save
并将 pm2 resurrect
命令放入批处理文件中,该批处理文件在 windows 启动时有一个快捷方式,以确保进程自动启动。
问题是 pm2 进程已恢复,但 node-opcua
进程 运行ning 到 pm2 仍然抛出错误 %LOCALAPPDATA%\Temp\{some_path} file not found
。我手动 运行 pm2 restart
但还是没成功。
首先我是从 node-opcua 模块的问题中想到的,并考虑如何让它使用新的系统变量,但由于进程不断地创建和删除临时文件,所以没有这样做,所以我需要 pm2 使用新的系统变量,它在系统重启后具有更新的路径,并且即使在 pm2 restart
.
之后也没有更新
因此,为了更新变量,我找到了两个解决方案:
- 删除旧进程并启动一个新的 pm2 进程到 运行 该应用程序并将其放入批处理文件中,在服务器重新启动时调用
- 在
pm2 resurrect
后添加pm2 restart {name} --update-env
,系统变量会更新
我创建了一个节点应用程序,用于订阅 OPC-UA 服务器并将数据存储在我们的 s3 存储桶中。为此,我正在使用 node-opcua 模块。
我正在通过 RDP 在 Windows 服务器上工作,node-opcua
模块在 %LOCALAPPDATA%\Temp
下创建一些文件作为过程的一部分并使用它。我正在使用 pm2
到 运行 应用程序,它通过进程本身动态生成的 TMP
和 TEMP
环境变量获取这些文件的路径。
当 Windows 服务器重新启动时,它会删除这些文件并更新新文件的位置。我已经有了 运行 pm2 save
并将 pm2 resurrect
命令放入批处理文件中,该批处理文件在 windows 启动时有一个快捷方式,以确保进程自动启动。
问题是 pm2 进程已恢复,但 node-opcua
进程 运行ning 到 pm2 仍然抛出错误 %LOCALAPPDATA%\Temp\{some_path} file not found
。我手动 运行 pm2 restart
但还是没成功。
首先我是从 node-opcua 模块的问题中想到的,并考虑如何让它使用新的系统变量,但由于进程不断地创建和删除临时文件,所以没有这样做,所以我需要 pm2 使用新的系统变量,它在系统重启后具有更新的路径,并且即使在 pm2 restart
.
因此,为了更新变量,我找到了两个解决方案:
- 删除旧进程并启动一个新的 pm2 进程到 运行 该应用程序并将其放入批处理文件中,在服务器重新启动时调用
- 在
pm2 resurrect
后添加pm2 restart {name} --update-env
,系统变量会更新