Cosa potrebbe impedire l'esecuzione del mio script di backup?

1

Ho problemi a eseguire un semplice script di backup. Il seguente script viene eseguito la maggior parte del tempo, ma a volte fallisce completamente (senza stampare alcuna informazione di registro). C'è qualcosa nello script che potrebbe impedire a intermittenza di funzionare?

Anche quando viene eseguito, i messaggi del log di test sono talvolta ritardati nell'apparire (come se il file di registro non viene toccato quando viene scritto, o la scrittura nel file di log viene ritardata), rendendo difficile la diagnosi.

#!/bin/bash

printf "'date': Start of Runkit backup Power Manager script:\n" >> ~/Library/Logs/Mine/tests.log

if [ $(mount | grep -c '/Volumes/Run Kit') != 1 ]
then
    printf "\tDon't copy: /Volumes/Run Kit not mounted\n" >> ~/Library/Logs/Mine/tests.log
else
    if [ $(pmset -g ac | grep -c 'Wattage') != 1 ]
    then
        printf "\tDon't copy: Not plugged in\n" >> ~/Library/Logs/Mine/tests.log
    else
        caffeinate -s -t 1200 &
        printf "\tDo copy: /Volumes/Run Kit mounted\n" >> ~/Library/Logs/Mine/tests.log
        /Users/Rax/Library/Application\ Support/SuperDuper\!/Scheduled\ Copies/SDUtil -i || open file:///Users/Rax/Library/Application\%20Support/SuperDuper\%21/Scheduled\%20Copies/Smart\%20Update\%20Run\%20Kit\%20from\%20Main.sdsp/Copy\%20Job.app
    fi
fi

printf "'date': End of Runkit backup Power Manager script:\n" >> ~/Library/Logs/Mine/tests.log

exit 0
    
posta orome 29.11.2013 - 23:10
fonte

1 risposta

2

Per prima cosa convergere le istruzioni printf in logger -p user.info perché sono facilmente osservabili nell'app console (e syslog) ogni volta che viene eseguito lo script.

Puoi anche creare un secondo script che registra solo i messaggi di test o crea file vuoti /usr/bin/touch /tmp/test.$$.log per determinare se il tuo script è il colpevole o lo strumento Power Manager che stai utilizzando non avvia in modo affidabile lo script.

Inoltre, puoi provare a utilizzare un'app come Lingon per fare in modo che launchd avvii il tuo script. Il sistema utilizza questa funzionalità per eseguirsi da solo, quindi è altamente affidabile e registra i guasti correttamente se è necessario risolvere un problema lungo la strada.

    
risposta data 01.12.2013 - 00:52
fonte

Leggi altre domande sui tag