systemd 中的 pm2 实际上并未启动进程

systemd 中的 pm2 实际上并未启动进程

我在以下情况pm2下运行(这是在 Amazon Linux2023 上)时遇到问题。守护进程运行良好,如果进程死亡,它会重新启动。但是,如果服务器重新启动,重新启动,并且它pm2-rootsystemdpm2-root它已经重启了所有进程,但还没有。例如:

# pm2 ls
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 3  │ IDAP Dev           │ fork     │ 0    │ stopped   │ 0%       │ 0b       │
│ 4  │ IDAP Website       │ fork     │ 0    │ online    │ 0%       │ 0b       │
│ 10 │ Mirovoy NextJS     │ fork     │ 0    │ online    │ 0%       │ 0b       │
│ 5  │ Reanthropize       │ fork     │ 0    │ online    │ 0%       │ 0b       │
│ 6  │ Reanthropize Stage │ fork     │ 0    │ online    │ 0%       │ 0b       │
│ 1  │ lp-api             │ fork     │ 0    │ online    │ 0%       │ 0b       │
│ 9  │ url-shortener      │ fork     │ 0    │ online    │ 0%       │ 0b       │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

我已经手动干预了 ID 3、9 和 10,但是让我们看一下 1(desc最后是完整的):

# pm2 desc 1
 Describing process with id 1 - name lp-api 
┌───────────────────┬────────────────────────────────────────────────────────────┐
│ status            │ online                                                     │
│ restarts          │ 0                                                          │
│ uptime            │ 23h                                                        │
│ pid path          │ /root/.pm2/pids/lp-api-1.pid                               │
│ watch & reload    │ ✘                                                          │
│ unstable restarts │ 0                                                          │
│ created at        │ 2022-08-23T14:26:17.285Z                                   │
└───────────────────┴────────────────────────────────────────────────────────────┘

日志中什么也没有:

# pm2 logs 1
[TAILING] Tailing last 15 lines for [1] process (change the value with --lines option)
/root/.pm2/logs/lp-api-out.log last 15 lines:
/root/.pm2/logs/lp-api-error.log last 15 lines:

但它肯定没有运行:

# ll /root/.pm2/pids/
total 8
-rw-r--r--. 1 root root 5 Sep 26 10:09 Mirovoy-NextJS-10.pid
-rw-r--r--. 1 root root 5 Sep 26 00:01 url-shortener-9.pid
# lsof -i -P -n | grep LISTEN | grep 9292
#

但是如果我现在手动重新启动它:

# pm2 stop 1
[PM2] Applying action stopProcessId on app [1](ids: [ '1' ])
[PM2] [1](1) ✓
# pm2 delete 1
[PM2] Applying action deleteProcessId on app [1](ids: [ '1' ])
[PM2] [lp-api](1) ✓
# cd /mnt/data/www/vhosts/chrisrichardson.info/landing-page-api // cd to exec cwd
# pm2 start npm --name lp-api -- run prod // run script args

一切都很好

# ll /root/.pm2/pids/
total 12
-rw-r--r--. 1 root root 5 Sep 26 10:09 Mirovoy-NextJS-10.pid
-rw-r--r--. 1 root root 5 Sep 26 11:19 lp-api-11.pid // <- PID now here
-rw-r--r--. 1 root root 5 Sep 26 00:01 url-shortener-9.pid
# lsof -i -P -n | grep LISTEN | grep 9292
node      79177            root   19u  IPv6 410747      0t0  TCP *:9292 (LISTEN)

我如何让它在系统重启时真正启动这些进程,而不是只是假装/认为它启动了?

笔记:我还包含了手动干预后的完整描述,我唯一看到的是存在一些env分歧,但我不明白这是如何导致问题的。

附录

完整输出pm2 desc 1

 Describing process with id 1 - name lp-api 
┌───────────────────┬────────────────────────────────────────────────────────────┐
│ status            │ online                                                     │
│ name              │ lp-api                                                     │
│ namespace         │ default                                                    │
│ version           │ N/A                                                        │
│ restarts          │ 0                                                          │
│ uptime            │ 24h                                                        │
│ script path       │ /bin/npm                                                   │
│ script args       │ run prod                                                   │
│ error log path    │ /root/.pm2/logs/lp-api-error.log                           │
│ out log path      │ /root/.pm2/logs/lp-api-out.log                             │
│ pid path          │ /root/.pm2/pids/lp-api-1.pid                               │
│ interpreter       │ node                                                       │
│ interpreter args  │ N/A                                                        │
│ script id         │ 1                                                          │
│ exec cwd          │ /mnt/data/www/vhosts/chrisrichardson.info/landing-page-api │
│ exec mode         │ fork_mode                                                  │
│ node.js version   │ 17.9.0                                                     │
│ node env          │ N/A                                                        │
│ watch & reload    │ ✘                                                          │
│ unstable restarts │ 0                                                          │
│ created at        │ 2022-08-23T14:26:17.285Z                                   │
└───────────────────┴────────────────────────────────────────────────────────────┘
 Divergent env variables from local env 
┌──────────────┬──────────────────────┐
│ HOSTNAME     │ ip-10-0-4-227.eu-cen │
│ SUDO_COMMAND │ /bin/su              │
│ LANG         │ en_GB.UTF-8          │
│ LS_COLORS    │ rs=0:di=38;5;27:ln=3 │
│ PATH         │ /sbin:/bin:/usr/sbin │
│ _            │ /bin/pm2             │
└──────────────┴──────────────────────┘

 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs lp-api [--lines 1000]` to display logs
 Use `pm2 env 1` to display environment variables
 Use `pm2 monit` to monitor CPU and Memory usage lp-api

desc人工干预后的完整输出:

# pm2 desc 11
 Describing process with id 11 - name lp-api 
┌───────────────────┬────────────────────────────────────────────────────────────┐
│ status            │ online                                                     │
│ name              │ lp-api                                                     │
│ namespace         │ default                                                    │
│ version           │ N/A                                                        │
│ restarts          │ 0                                                          │
│ uptime            │ 7m                                                         │
│ script path       │ /root/.nvm/versions/node/v18.17.1/bin/npm                  │
│ script args       │ run prod                                                   │
│ error log path    │ /root/.pm2/logs/lp-api-error.log                           │
│ out log path      │ /root/.pm2/logs/lp-api-out.log                             │
│ pid path          │ /root/.pm2/pids/lp-api-11.pid                              │
│ interpreter       │ node                                                       │
│ interpreter args  │ N/A                                                        │
│ script id         │ 11                                                         │
│ exec cwd          │ /mnt/data/www/vhosts/chrisrichardson.info/landing-page-api │
│ exec mode         │ fork_mode                                                  │
│ node.js version   │ 18.17.1                                                    │
│ node env          │ N/A                                                        │
│ watch & reload    │ ✘                                                          │
│ unstable restarts │ 0                                                          │
│ created at        │ 2023-09-26T11:19:35.717Z                                   │
└───────────────────┴────────────────────────────────────────────────────────────┘
 Actions available 
┌────────────────────────┐
│ km:heapdump            │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop  │
│ km:heap:sampling:start │
│ km:heap:sampling:stop  │
└────────────────────────┘
 Trigger via: pm2 trigger lp-api <action_name>

 Code metrics value 
┌────────────────────────┬───────────┐
│ Used Heap Size         │ 15.67 MiB │
│ Heap Usage             │ 90.12 %   │
│ Heap Size              │ 17.38 MiB │
│ Event Loop Latency p95 │ 1.13 ms   │
│ Event Loop Latency     │ 0.23 ms   │
│ Active handles         │ 5         │
│ Active requests        │ 0         │
└────────────────────────┴───────────┘
 Divergent env variables from local env 


 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs lp-api [--lines 1000]` to display logs
 Use `pm2 env 11` to display environment variables
 Use `pm2 monit` to monitor CPU and Memory usage lp-api

相关内容