내 서버 세트에 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 명령이 정상적으로 실행됩니다. SSH를 통해 로그인하고 pm2가 포함된 스크립트를 실행하면 예상대로 작동합니다. 이 문제는 내 컴퓨터에서 원격 컴퓨터로 실행하려고 할 때만 발생합니다.
답변1
대화형 셸을 실행하면 "rc" 파일(예: .bash_profile)을 기반으로 PATH 변수가 설정됩니다. "비대화형" ssh 명령을 실행하면 많은 스크립트가 실행되지 않으므로 PATH가 설정되지 않습니다.
pm2
현재 디렉터리(예: 또는 )인 경우에도 해당 디렉터리를 찾을 수 있도록 ./pm2
경로 이름을 포함해야 합니다 . 그렇지 않으면 을 호출할 때 ./path/to/pm2
export PATH=....
pm2