запустить pm2 из удаленного сценария оболочки

Я пытаюсь написать скрипт, который ssh ​​в кучу моих серверов, и запускает некоторые команды для запуска моего приложения. Одна из команд (pm2) всегда говорит pm2: команда не найдена. Вот как я пытаюсь это сделать:

ssh -o StrictHostKeyChecking=no -i /Path/to/key-pair.pem ubuntu@${ec2ips[i]} 'bash ' << 'STARTAPP' cd ~/my-app-folder pm2 start ./bin/www --name 'my-app' exit STARTAPP 

когда я обычно использую ssh, все команды pm2 работают нормально. Если я вхожу и запускаю скрипт с pm2 в нем, он также работает так, как ожидалось. Только когда я пытаюсь запустить его на удаленном компьютере с моей машины.

  • Команда rm в скрипте bash не работает с переменной
  • Насколько надежны / переносимы Nix-встроенные / команды (echo, ps, sort, uniq) из Debian в другие дистрибутивы
  • Запустить 4 программы при запуске в Linux Mint через терминал
  • Сценарий Bash не работает
  • Почему «while .. read .. << EOL» выполняет расширение переменной, но <файл и | не?
  • Отправьте EOF на именованный канал - очистка / высыхание fifo
  • Лучший способ работы / отображения дерева изображений, отсортированных по размеру
  • bash - Одиночные кавычки добавляются в двойные кавычки
  • One Solution collect form web for “запустить pm2 из удаленного сценария оболочки”

    Когда вы запускаете интерактивную оболочку, она устанавливает переменную PATH в соответствии с вашими «rc» файлами (например, .bash_profile). Когда вы запускаете эту «неинтерактивную» команду ssh, многие из этих сценариев не запускаются, поэтому PATH не установлен.

    Вы должны указать путь к pm2 даже если это текущий каталог (например ./pm2 или /path/to/pm2 ), чтобы убедиться, что он найден, или export PATH=.... перед вызовом pm2 .

    Linux и Unix - лучшая ОС в мире.