私のサーバーセットにSSHを介して接続し、いくつかのコマンドを実行して自分のアプリケーションを実行できるスクリプトを作成しようとしています。コマンドの1つ(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コマンドが正常に実行されます。 SSH経由でログインしてpm2を含むスクリプトを実行すると、期待どおりに機能します。この問題は、マイコンピュータからリモートコンピュータとして実行しようとした場合にのみ発生します。
答え1
対話型シェルを実行すると、「rc」ファイル(.bash_profileなど)に基づいてPATH変数が設定されます。 「非対話型」sshコマンドを実行すると、多くのスクリプトが実行されないため、PATHは設定されません。
pm2
現在のディレクトリ(たとえば、または)の場合でも、そのディレクトリを見つけることができるように./pm2
パス名を含める必要があります。それ以外の場合を呼び出すとき。/path/to/pm2
export PATH=....
pm2