Сегодня я пытаюсь обновить код на удаленном хосте с помощью скрипта ниже.
Так как мое локальное интернет-состояние не было хорошим, я установил программное обеспечение screen
на случай отключения.
И тогда я выполнил сценарий выше. Все идет хорошо для первых нескольких серверов приложений.
Но когда дело доходит до последнего главного сервера. Я получил ошибку о наблюдателе.
Затем после отладки я обнаружил, что вся файловая система на главном сервере внезапно стала доступна только для чтения.
Я перезапустил его через ssh, но больше не могу к нему подключиться.
Есть ли вероятность того, что моя операция выполнения сценария, приведенного ниже, приведет к катастрофе только для чтения файловой системы?
Я сейчас такой святой, потому что в этот момент $ $$ компании испаряется.
#!/bin/sh
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` <tag or branch>"
exit 1
fi
TAG=$1
WORK_DIR=$(cd "$(dirname "$0")"; pwd)
GIT_REPO_PATH="/data/repo/backend_english"
APP_SRV_LIST="${WORK_DIR}/app_prd_srv.txt"
# Read the Destination directory
_DES_DIR="backend_english"
DES_FULL_DIR=''
read -p "Please Select the destination directory: [$_DES_DIR] " DES_DIR
if [ "x${DES_DIR}" != "x" ]; then
DES_FULL_DIR="/data/sites/${DES_DIR}/"
fi
if [ ! -d "$DES_FULL_DIR" ]; then
echo "Selecting default: /data/sites/${_DES_DIR}/"
DES_FULL_DIR="/data/sites/${_DES_DIR}/"
else
echo "destination dir: ${DES_FULL_DIR}"
fi
HOST=(`cat ${APP_SRV_LIST} | grep -v '^#' `)
echo "Deploy to the hosts:"
for i in ${HOST[@]}
do
echo $i
done
read -p "Are you sure you want to continue (y/n)?" MFLAG
if [ "x${MFLAG}" != "xy" ]; then
exit 1
fi
cd $GIT_REPO_PATH
/usr/bin/git fetch --all
/usr/bin/git checkout $TAG
THOST=${HOST[0]}
/usr/bin/rsync --dry-run -a --delete --progress --exclude='*.pyc' --exclude='upload_xls' --exclude='.git' --exclude='.gitignore' --exclude='logs' --exclude='test/local_config.py' $GIT_REPO_PATH/ admin@$THOST:$DES_FULL_DIR/
read -p "Are you sure you want to continue (y/n)?" CFLAG
if [ "x${CFLAG}" != "xy" ]; then
exit 1
fi
echo $TAG > $WORK_DIR/version_prd.txt
for host in ${HOST[@]}
do
echo $host
rsync -a --delete --progress --exclude='upload_xls' --exclude='.git' --exclude='.gitignore' --exclude='logs' --exclude='test/local_config.py' $GIT_REPO_PATH/ admin@$host:$DES_FULL_DIR/
done
echo " "
echo " "
read -p "Restart all process (y/n)?" RFLAG
if [ "x${RFLAG}" != "xy" ]; then
exit 0
fi
for host in ${HOST[@]}
do
echo $host
ssh admin@$host /usr/local/bin/supervisorctl -u my_account -p my_password restart all
done