![sudo를 사용하여 비밀번호를 제출하고 nohup을 사용하여 스크립트를 실행합니다.](https://linux55.com/image/9125/sudo%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%A5%BC%20%EC%A0%9C%EC%B6%9C%ED%95%98%EA%B3%A0%20nohup%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
작업이 셸 및 해당 종료와 독립적이도록 백그라운드에서 스크립트를 다운로드하고 실행하고 싶습니다. 또한 스크립트는 다음과 같이 실행되어야 합니다 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
삭제하기 전에 스크립트가 완료될 때까지 기다립니다.