运行pm2命令只出现[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2

小程序上线过程中,pm2安装成功了,但是运行pm2命令只打印一句话

root@iZm5e3iekfi2krh6udbikaZ:~/.pm2# pm2 -v

[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2

查看pm2日志,里面报错

root@iZm5e3iekfi2krh6udbikaZ:~/.pm2# vim pm2.log

报错内容

SyntaxError: Unexpected token ...
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/root/node-v8.2.1-linux-x64/lib/node_modules/pm2/node_modules/picomatch/index.js:3:18)

出现报错的原因主要是nodejs版本太低了
我们来更新nodejs的版本

1、安装新版本的node、npm,我选择的是v10.13.0

我们云服务器是Ubuntu系统,通过apt-get安装即可

//下载nodejs安装文件node-v10.13.0-linux-x64.tar.xz
~$ wget https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0-linux-x64.tar.xz

//解压下载的文件
~$ tar -xvf node-v10.13.0-linux-x64.tar.xz

//测试是否安装成功
~$ cd node-v10.13.0-linux-x64/bin && ls
node  npm  npx

//符号./的意思是当前文件夹下,现在 node 和 npm 还不能全局使用
~/node-v10.13.0-linux-x64/bin$ ./node -v
v10.13.0
2、查看当前目录

输入pwd查看当前目录,记住这个目录,我们下面要用

~/node-v10.13.0-linux-x64/bin$ pwd
//查到的目录如下
/root/node-v10.13.0-linux-x64/bin
3、全局使用node、npm

现在npm、node只能在我们刚刚安装的node-v10.13.0-linux-x64/bin文件夹下面使用,我们在Ubuntu中设置环境变量,从而可以全局使用node、npm

//回到~目录
~/node-v10.13.0-linux-x64/bin$ cd ~

//打开.bashrc文件夹
~$ vim .bashrc
4、编辑.bashrc文件

vim是一个文本编辑器,输入i,进入编辑状态,添加下面语句
其中/root/node-v10.13.0-linux-x64/bin/是【(2)查看当前目录】中查出来的目录,替换成你自己查到的目录

export PATH=/root/node-v10.13.0-linux-x64/bin/:$PATH

编辑完成后,按esc键退出编辑状态,再输入:wq保存并退出文件

5、使环境变量生效
~$ source .bashrc
6、检查是否可以全局使用node、npm
~$ node -v
v10.13.0

~$ npm -v
6.4.1
7、更新完node之后,检查pm2是否可以正常使用
root@iZm5e3iekfi2krh6udbikaZ:~# pm2 -v

[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
4.1.2

现在可以了,打印出了Successfully的信息

### Sersync 安装错误分析 在安装和配置 `sersync` 的过程中,如果遇到错误 `&#39;Failed at step EXEC spawning /bin/sersync2: No such file or directory&#39;`,这通常表明系统无法找到指定的可执行文件 `/bin/sersync2` 或者该文件缺少必要的依赖项。 以下是可能的原因以及对应的解决方案: #### 1. **路径问题** 如果系统的环境变量未正确设置或者二进制文件的实际存储位置与预期不符,则可能导致此错误。确认 `sersync2` 是否已成功编译并放置到正确的目录下[^3]。 解决方法: - 检查 `sersync2` 文件是否存在及其具体路径。可以通过命令 `find / -name sersync2` 查找其实际位置。 - 将 `sersync2` 移动至标准路径(如 `/usr/local/bin/`),并通过以下方式验证: ```bash mv /path/to/sersync2 /usr/local/bin/ chmod +x /usr/local/bin/sersync2 ``` #### 2. **依赖库缺失** `sersync` 是基于 `boost` 库构建的工具,在运行时需要特定版本的动态链接库支持。如果这些库不存在或不兼容,可能会引发上述错误[^2]。 解决方案: - 确认是否已经安装了所需的 Boost 版本(推荐至少为 boost_1_41_0)。可以使用以下命令检查当前版本: ```bash ldconfig -p | grep libboost ``` - 若发现某些必要组件丢失,请重新下载对应版本的 Boost 并完成安装过程: ```bash wget https://dl.bintray.com/boostorg/release/<version>/source/boost_<version>.tar.gz tar xf boost_<version>.tar.gz && cd boost_<version> ./bootstrap.sh --prefix=/usr/local sudo ./b2 install ``` #### 3. **SELinux 配置冲突** SELinux 可能会阻止程序访问某些资源从而触发类似的找不到文件类异常情况[^4]。 处理办法: - 设置临时禁用模式来测试是否有影响: ```bash setenforce 0 ``` - 如效果显著则需调整策略规则允许相关操作;否则恢复原状以免降低安全性: ```bash setenforce 1 ``` --- ### 示例代码片段 下面提供一段简单的脚本来自动化部分排查流程: ```bash #!/bin/bash # Step A: Verify existence of binary. if [[ ! -f "/usr/local/bin/sersync2" ]]; then echo "[Error] Missing executable &#39;/usr/local/bin/sersync2&#39;." fi # Step B: Check dynamic libraries availability. ldd $(which sersync2) || echo "[Warning] Dependency issues detected." # Optional C: Toggle SELinux enforcement temporarily. current_status=$(getenforce) [[ "$current_status" != "Permissive" ]] && \ (setenforce 0; sleep 5; test_result=$?; setenforce $current_status) exit ${test_result:-$?} ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵宁一

点赞是最好的赞赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值