sudo를 사용하여 비밀번호를 제출하고 nohup을 사용하여 스크립트를 실행합니다.

sudo를 사용하여 비밀번호를 제출하고 nohup을 사용하여 스크립트를 실행합니다.

작업이 셸 및 해당 종료와 독립적이도록 백그라운드에서 스크립트를 다운로드하고 실행하고 싶습니다. 또한 스크립트는 다음과 같이 실행되어야 합니다 sudo.

echo MY_PWD | sudo -u MY_USER -S ...

따라서 인증을 수행하고 여러 줄로 백그라운드 작업을 생성하는 SSH 세션에 코드 한 줄만 추가하면 됩니다. 또한 실행 성공 또는 실패 후 설치 스크립트를 제거해야 합니다.NEW_SCRIPT_NAME.sh 코드 줄은 다음과 같습니다.

wget https://URL_TO_SCRIPT.sh -O NEW_SCRIPT_NAME.sh
sed -i 's/\\r$//' NEW_SCRIPT_NAME.sh
chmod +x NEW_SCRIPT_NAME.sh
sudo nohup NEW_SCRIPT_NAME.sh &
rm NEW_SCRIPT_NAME.sh

나는 이것을 시도한다:

echo raspberry | sudo -u pi -S wget https://URL_TO_SCRIPT.sh -O NEW_SCRIPT_NAME.sh && sed -i 's/\\r$//' NEW_SCRIPT_NAME.sh && chmod +x NEW_SCRIPT_NAME.sh && nohup ./NEW_SCRIPT_NAME.sh & && rm NEW_SCRIPT_NAME.sh

이로 인해 다음 오류가 발생합니다.

-bash: syntax error near unexpected token `&&'

삭제하면 해결 가능&line nohup이지만 이로 인해 스크립트가 배경 대신 전경에서 실행되는데 이는 내 목적에 필요합니다.

답변1

이것은 Bash의 잘못된 구문입니다.

nohup ./NEW_SCRIPT_NAME.sh & && rm NEW_SCRIPT_NAME.sh

~에서주택 검사:

Line 1:
nohup ./NEW_SCRIPT_NAME.sh & && rm NEW_SCRIPT_NAME.sh
                             ^-- SC1070: Parsing stopped here. Mismatched keywords or invalid parentheses?

something & && something첫 번째 명령을 백그라운드에 넣으면 스크립트가 코드를 반환할 때까지 기다릴 수 없기 때문에 단순히 실행할 수는 없습니다 .

백그라운드 nohup에서 전체 파이프라인을 실행할 수 있습니다(가급적 스크립트).

nohup ./run.sh &

또는 하나의 명령에 모든 것을 포함시키려면 결과를 기다려야 합니다.

nohup ./NEW_SCRIPT_NAME.sh & wait && rm NEW_SCRIPT_NAME.sh

삭제하기 전에 스크립트가 완료될 때까지 기다립니다.

관련 정보