nice
일부 데이터베이스를 덤프하고 백업용 자산을 압축하는 3가지 명령이 있습니다 . 그런 다음 파일을 다른 서버에 복사해야 합니다. 나는 다음 명령을 사용하고 있습니다 :
nice mysqldump -u user1 -p'XXX' database1 | gzip > database1.sql.gz
nice mysqldump -u user2 -p'XXX' database2 | gzip > database2.sql.gz
nice zip -r assets.zip /var/www/site1/assets/
cd ..
scp -R backups [email protected]:/home/user/backups
내 문제는 scp
좋은 명령이 완료되기 전에 명령이 실행되는 것 같다는 것입니다. 이로 인해 부분적인 SQL 덤프가 발생하고 때로는 zip 파일이 손상되기도 합니다.
그렇다면 파일을 다른 서버에 복사하기 전에 3가지 명령이 모두 완료되었는지 어떻게 확인할 수 있나요?
답변1
wait
내장 쉘을 사용하고 싶습니다 .
백그라운드에서 명령을 실행한 다음 계속하기 전에 모든 명령이 완료될 때까지 기다리도록 셸에 지시합니다. 다음은 매우 기본적인 예입니다.
#!/bin/bash
sleep 6 && echo first sleep &
WAITPID="$!"
sleep 3 && echo second sleep &
WAITPID="$WAITPID $!"
echo "waiting"
wait $WAITPID
echo "done waiting"
노트:
- 백그라운드 프로세스
pid
는 에 수집되고WAITPID
목록은 에 공급됩니다wait
. 작업 번호를 사용할 수도 있습니다. - 이 명령을 실행하면
second sleep
먼저 완료되는 것을 볼 수 있습니다.