¿Qué podría estar impidiendo que se ejecute mi script de copia de seguridad?

1

Tengo problemas para ejecutar un script de copia de seguridad simple. La siguiente secuencia de comandos se ejecuta la mayor parte del tiempo, pero ocasionalmente falla por completo (sin imprimir ninguna información de registro). ¿Hay algo en el script que podría evitar que se ejecute de forma intermitente?

Incluso cuando se ejecuta, los mensajes de registro de prueba a veces tardan en aparecer (como si no se tocara el archivo de registro cuando se escribe, o se retrasa la escritura en el archivo de registro), lo que dificulta el diagnóstico.

#!/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
    
pregunta orome 29.11.2013 - 23:10

1 respuesta

2

Primero convertiría las declaraciones printf en declaraciones logger -p user.info ya que se pueden observar fácilmente en la aplicación de la consola (y syslog) cada vez que se ejecuta el script.

También podría crear un segundo script que solo registre los mensajes de prueba o cree archivos vacíos /usr/bin/touch /tmp/test.$$.log para determinar si el script anterior es el culpable o la herramienta de Power Manager que está utilizando no está ejecutando el script de manera confiable.

También, puede intentar usar una aplicación como Lingon para que launchd inicie su secuencia de comandos. El sistema utiliza esa función para ejecutarse solo, por lo que es altamente confiable y registra fallos en caso de que necesite solucionar un problema en el futuro.

    
respondido por el bmike 01.12.2013 - 00:52

Lea otras preguntas en las etiquetas