10 votos

Crontab ejecución antes de nfs montado

Ejecución de Cronjob @reboot devuelve el archivo en el recurso compartido nfs no existe.

Ejemplo

@reboot python /abs/path/to/script.py

el correo de crontab en inicio lee "más o menos"

/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.

Secuencia de comandos se puede ejecutar desde la línea de comandos sin ningún tipo de problema..
La teoría es que la tarea programada se ejecuta antes de que el monte se ha ejecutado.
Una de las preguntas.

  1. Es esta teoría correcta?
  2. Es allí una manera de forzar el trabajo para gritar hasta que la unidad se ha montado? .... Otros que simplemente poner en un sueño de los 60 en el comando. ;) He intentado ya, pero es golpeado y se pierda y necesito el script para que se ejecute el 100% del tiempo rápidamente.

18voto

katit Puntos 130

Usted puede utilizar el punto de montaje de comando para asegurarse de que el montaje se ha llevado a cabo antes de ejecutar el comando por ejemplo (suponiendo que /abs es el punto de montaje)

#!/bin/bash
while true
do
    if mountpoint -q /abs
        then
            /usr/bin/python /abs/path/to/script.py
            break
        fi
    sleep 10
done

4voto

Aaron Copley Puntos 6043

No estoy seguro de cuál es el problema desde el cron se inicia después de la creación de redes. (Al menos en Red Hat y derivados.) Son monturas en /etc/fstab con _netdev opción o en otro lugar?

La manera estándar para ejecutar algo en el arranque, es incluir en /etc/rc.local. Esto se ejecutó después de que la red se inicializa y todos los demás servicios se han iniciado. (Incluyendo el montaje de sistemas de archivos remotos.)

(O es que hay una razón para que sólo se ejecute la secuencia de comandos después de un literal de reiniciar?)

1voto

quanta Puntos 31979

Aquí están algunas ideas:

  1. compruebe si NFS está montado. Si no, el monte, a continuación, ejecute la secuencia de comandos:

    [ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py

  2. ejecutar la secuencia de comandos en la start() función de la NFS init script:

    echo -n $"Starting NFS mountd: "
    daemon rpc.mountd $RPCMOUNTDOPTS
    RETVAL=$?
    echo
    [ $RETVAL -ne 0 ] && exit $RETVAL || python /abs/path/to/script.py
    

1voto

Zypher Puntos 26466

Para estar absolutamente seguro de que la secuencia de comandos de python es capaz de ejecutar. Usted tendría que envolver en una secuencia de comandos almacenados en el almacenamiento local para verificar que el punto de montaje.

Algo como (advertencia pseudo código):

while (!ScriptExists && ErrorCount < 10)
do
    mount /my/mount/point
    sleep 10
    ErrorCount++
done

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: