ENOENT
обозначает Нет такой записи каталога
Команда env
используется для запуска другой программы в пользовательской среде без изменения текущей.
sudo env PATH=$PATH:/usr/bin \
/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 \
startup systemd -u kramer65 --hp /home/kramer65
Установка примечание из pm2 документации Чтобы обнаружить доступные системы инициализации на вашем компьютере и сгенерировать конфигурацию, используйте:
pm2 startup
$ [PM2] You have to run this command as root. Execute the following command:
$ sudo su -c env PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin pm2 startup <distribution> -u <user> --hp <home-path>
Я разбью команду следующим образом
sudo env name=value name2=value2 program and args
1) Программа
запускает команду program /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2
Первый оставшийся аргумент указывает имя программы для вызова;поиск производится в соответствии с переменной окружения PATH.
2) аргументы передано
Все остальные аргументы передаются в качестве аргументов этой программе.
args
передано pm2
команда cli: startup systemd -u kramer65 --hp /home/kramer65
.
- команда
startups
просто установит pm2
для запуска при загрузке ( Команды запуска Cli * ) - команда
systemd
используется для поддерживаемых систем инициализации Ubuntu => 16, CenOS >=7, Arch, Debian >=7
( Совместимость с загрузочными хуками ) и должна быть изменена на правильную platform
, как в прилагаемых документах.
3) Среда , используемая для выполнения программы
со средой, сформированной путем расширения текущей среды переменными среды и значениями, обозначенными как name = valueи имя2 = значение2.
В соответствии с документами pm2
должна быть папка внутри /home/kramer/.nvm/versions/node/v4.3/bin
PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin
, когда вы используете папку за пределами каталога home
, потому что вы работаетестарая версия nodejs
(см. последнюю главу Nodejs установлен в usr / bin / node ).
PATH=$PATH:/usr/bin
4) Пользователь права доступа
вы передаете --user kramer65 --home-path /home/kramer65
команде pm2
cli.
-u <user> --hp <home-path>
Сохраните ваш процесс
Хук запуска автоматически загружает список процессов, который вы ранее сохранили,Сохраните список процессов с помощью:
pm2 save
Как воспроизвести: у вас есть две версии nodejs на вашем компьютере.Одна - старая версия, установленная в /usr/bin/node
, а другая - недавняя версия, расположенная в ./nodejs/node
.Я запускаю свой менеджер pm2 программно, вызывая ./nodejs/node myManager.js
, который вызовет pm2.connect (), который попытается порождать демона PM2.
В результате происходит запуск демона PM2 с использованием старогодвоичный файл узла /usr/bin/node
вместо недавнего двоичного файла узла, выполняющего мой сценарий myManager.js (расположен в ./nodejs/node
).
Для этого нужно найти двоичный файл узла в текущем каталоге, а затем по умолчанию использовать узелдвоичные файлы в пути. НО двоичный файл узла, на котором выполняется текущий код, находится в ./nodejs/node
.Чтобы запустить демон PM2 с тем же двоичным файлом узла, что и текущий процесс, вам нужно использовать process.execPath
. Вы можете прочитать дополнительную информацию в и в соответствующемобсуждение