SpiderOak 클라이언트를 사용하여 NAS 서버 데이터를 클라우드에 백업합니다. 몇 달 동안 이것은 잘 작동하고 있습니다. 그러나, 오늘, 잠시 동안 달리기 후에, cronjob 과정은 잠 상태에서 찔렀다. 이유와 수정 방법을 찾는 데 도움이 필요합니다.Linux bash 스크립트가 절전 상태로 고정됨
저는 최근에 잘 작동 해 왔던 cronjob 스크립트를 잃어 버렸기 때문에 새로운 bash 스크립트를 작성해야했습니다. 어쩌면 내가 실수 한거야. 여기있다 :
#!/bin/sh
WORKING_FILE=/volume1/Volume_1/spideroak.lock
RESULT_FILE=/volume1/Volume_1/spideroak.log
# Cancel if there is an ongoing backup
if [ -f "$WORKING_FILE" ]
then
echo "Error: $WORKING_FILE already exists; backup is already running."
exit 1;
fi
# Run backup and save results to file with the name that gets checked above
/opt/SpiderOakONE/usr/bin/SpiderOakONE --batchmode --verbose --redirect="$WORKING_FILE"
# Rename log once backup is complete
mv "$WORKING_FILE" "$RESULT_FILE"
# Set log file permissions and exit
chmod 644 "$RESULT_FILE"
echo "Backup complete. Result saved to $RESULT_FILE"
는 또한 최근에 NAS의 펌웨어를 업데이트하지만이 잠을 오래 지속되는 프로세스를 넣어 역할을 할 수 있을지 모른다. 백업 명령을 몇 초 만에 완료하면 모든 것이 작동합니다. 예 : --batchmode --verbose
을 --selection
으로 바꾸고 그 밖의 모든 것은 그대로 두십시오.
NAS는 반드시는 Synology DS-216 + 실행 DSM 6.0.2-8451 Update 4
펌웨어
프로세스 잠금으로 일반 파일을 사용하는 것은 나쁜 생각 일 수 있습니다. cron 작업이 중단되거나 실행 중에 NAS가 다시 시작되면 .lock 파일이 "이미 실행 중"의 영구 상태가되도록 제거되지 않습니다. 잠금 대신 [flock'] (https://linux.die.net/man/1/flock)과 같은 것을 사용해보십시오. –
파일 존재 여부를 확인하는 대신 프로세스가 있는지 확인하십시오. 필요한 경우 프로세스 ID를 파일에 저장하고 저장된 프로세스 ID를 사용하여 프로세스의 존재를 확인하십시오. – alvits