
저는 아주 작은 간단하고 작은 웹 앱을 가지고 있으며, 다음을 수행하는 매우 단순한 배포 스크립트를 사용하여 제 삶을 좀 더 쉽게 만들고 싶었습니다.
- git에서 업데이트 가져오기
- 작곡가 실행
- 모든 파일의 소유자 변경
스크립트는 기본적으로 잘 작동하며 다음과 같습니다.
#!/bin/bash
echo "Updating repository ...";
sudo git pull;
echo "Installing composer dependencies from lockfile ...";
composer install;
echo "Changing owner to www-data:www-data ...";
sudo chown -R www-data:www-data .;
echo "Deployment DONE!";
그러나 보시다시피 이 스크립트에는 sudo로 실행되는 두 개의 명령이 있습니다. 즉, git pull
및 chown
.
내 문제는 다음과 같습니다. sudo로 명령을 실행할 때 시스템이 비밀번호를 묻는 빈도에 시간 초과가 있다는 것을 알고 있습니다. 문제는 시간 제한 내에 잘 있음에도 불구하고 스크립트가언제나에서 비밀번호를 묻는다두번째sudo(chown) 명령.
누군가 나에게 알려주실 수 있습니까? 왜 그럴 수 있습니까?
답변1
이유가 무엇인지는 잘 모르겠지만 해결책은 다음과 같습니다.
if [[ $(id -u $(whoami)) != 0 ]]
then
sudo bash $( cd $(dirname $0) ; pwd -P )
# taken from http://stackoverflow.com/a/4774063/2797066
else
#rest of script
fi
답변2
다음과 같이 스크립트를 실행해 보는 것은 어떨까요 sudo
?
sudo bash /path/to/script.sh
다음 내용 이 script.sh
없습니다 sudo
.
#!/bin/bash
echo "Updating repository ...";
git pull;
echo "Installing composer dependencies from lockfile ...";
composer install;
echo "Changing owner to www-data:www-data ...";
chown -R www-data:www-data .;
echo "Deployment DONE!"
이 방법을 사용하면 스크립트는 한 번만 비밀번호를 묻습니다.