Я использую pm2 (версия 3.4.1) для управления Сервер веб-сокетов Laravel Echo. Он работает отлично, но я пытаюсь заставить его автоматически запускаться после перезагрузки компьютера (на котором работает Ubuntu 16.04). Для этого я выполнил эти инструкции:
$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u kramer65 --hp /home/kramer65
$ sudo env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u kramer65 --hp /home/kramer65
[sudo] password for kramer65:
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=kramer65
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/kramer65/.pm2
PIDFile=/home/kramer65/.pm2/pm2.pid
ExecStart=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
Target path
/etc/systemd/system/pm2-kramer65.service
Command list
[ 'systemctl enable pm2-kramer65' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-kramer65.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-kramer65...
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via: $ pm2 save
[PM2] Remove init script via: $ pm2 unstartup systemd
Итак, я запустил pm2 save
:
$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/kramer65/.pm2/dump.pm2
После этого я перезагружаю машину, снова включаю ssh и проверяю процессы pm2:
$ pm2 status
┌──────────┬────┬─────────┬──────┬─────┬─────────┬─────────┬────────┬─────┬────────┬────────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼─────┼─────────┼─────────┼────────┼─────┼────────┼────────┼──────────┤
│ echo │ 0 │ N/A │ fork │ N/A │ errored │ 0 │ 0 │ 0% │ 0 B │ kramer65 │ disabled │
└──────────┴────┴─────────┴──────┴─────┴─────────┴─────────┴────────┴─────┴────────┴────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
Как видите, статус ошибочный. Если я остановлюсь и начну процесс (pm2 stop echo && pm2 start echo
), процесс снова запустится.
Журнал ошибок (~ / .pm2 / pm2.log) сообщает мне следующее:
2019-05-14T11:56:36: PM2 log: ===============================================================================
2019-05-14T11:56:36: PM2 log: --- New PM2 Daemon started ----------------------------------------------------
2019-05-14T11:56:36: PM2 log: Time : Tue May 14 2019 11:56:36 GMT+0200 (CEST)
2019-05-14T11:56:36: PM2 log: PM2 version : 3.4.1
2019-05-14T11:56:36: PM2 log: Node.js version : 8.15.1
2019-05-14T11:56:36: PM2 log: Current arch : x64
2019-05-14T11:56:36: PM2 log: PM2 home : /home/kramer65/.pm2
2019-05-14T11:56:36: PM2 log: PM2 PID file : /home/kramer65/.pm2/pm2.pid
2019-05-14T11:56:36: PM2 log: RPC socket file : /home/kramer65/.pm2/rpc.sock
2019-05-14T11:56:36: PM2 log: BUS socket file : /home/kramer65/.pm2/pub.sock
2019-05-14T11:56:36: PM2 log: Application log path : /home/kramer65/.pm2/logs
2019-05-14T11:56:36: PM2 log: Process dump file : /home/kramer65/.pm2/dump.pm2
2019-05-14T11:56:36: PM2 log: Concurrent actions : 2
2019-05-14T11:56:36: PM2 log: SIGTERM timeout : 1600
2019-05-14T11:56:36: PM2 log: ===============================================================================
2019-05-14T11:56:36: PM2 log: App [echo:0] starting in -fork mode-
2019-05-14T11:56:36: PM2 log: App [echo:0] online
2019-05-14T11:56:36: PM2 error: Error: spawn node ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:362:16)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
Кто-нибудь знает, что здесь происходит не так?
journalctl -u service-name.service
говорит? - person suv   schedule 16.05.2019journalctl -u service-name.service
? Это говоритNo journal files were opened due to insufficient permissions.
, и если я вызываю это сsudo
, я получаю-- No entries --
. Я полагаю, вы имеете в виду, что мне нужно поменятьservice-name
на что-то другое. - person kramer65   schedule 16.05.20193.4.1
. Я тоже добавил к вопросу. - person kramer65   schedule 16.05.2019journalctl -u pm2-kramer65.service
- person suv   schedule 16.05.2019Target path
в моем первом выводе написано, что он написал/etc/systemd/system/pm2-kramer65.service
, поэтому я запустилjournalctl -u pm2-kramer65.service
(сsudo
и без него) и получил то же самое, что и раньше. Либоinsufficient permissions
, либо-- No entries --
. Любые идеи? - person kramer65   schedule 16.05.2019process.yml
, опубликуйте его. И файл pm2 config.js в$HOME/.pm2/conf.js
- person suv   schedule 16.05.2019systemctl list-unit-files --all
? - person suv   schedule 16.05.2019systemctl list-unit-files --all
много вывода, иpm2-kramer65.service enabled
- один из них. Это происходит как после перезагрузки машины (когда эхо находится в состоянииerrored
), так и после остановки и запуска эха, чтобы заставить его снова работать. - person kramer65   schedule 16.05.2019$HOME/.pm2/conf.js
не существует.~/.pm2/module_conf.json
существует, но содержит только пустой объект json ({}
). Я не могу найти ни одногоprocess.yml
файла. Где это могло быть? - person kramer65   schedule 16.05.2019pm2 info echo
, особенно первую часть описания процесса? - person Mat   schedule 17.05.2019