2016-11-21 4 views
0

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 펌웨어

+0

프로세스 잠금으로 일반 파일을 사용하는 것은 나쁜 생각 일 수 있습니다. cron 작업이 중단되거나 실행 중에 NAS가 다시 시작되면 .lock 파일이 "이미 실행 중"의 영구 상태가되도록 제거되지 않습니다. 잠금 대신 [flock'] (https://linux.die.net/man/1/flock)과 같은 것을 사용해보십시오. –

+0

파일 존재 여부를 확인하는 대신 프로세스가 있는지 확인하십시오. 필요한 경우 프로세스 ID를 파일에 저장하고 저장된 프로세스 ID를 사용하여 프로세스의 존재를 확인하십시오. – alvits

답변

0

되지 않음 대답 (이 답을 할 수있는 작은 기회가 있지만), I는 "WORKING_FILE의 위치를 ​​변경할 수 추천 할 것입니다 "/ tmp -이 폴더는 부팅 할 때마다 지워집니다 (Linux 배포판이 기본값인지 확인하십시오). 그러면 스크립트가 어떻게 든 실패하더라도 제어 파일이 삭제됩니다.

관련 문제