Perché questo script in cron.daily non verrà eseguito?

Ho scritto questo piccolo script Python per eseguire backup giornalieri di una directory contenente alcuni file (i backup dovrebbero ruotare dopo una settimana). Questo è:

$ cat /etc/cron.daily/file-store-backup.py #!/usr/bin/python3 import datetime import calendar import subprocess import os.path def main(): origin = '/var/file-store' today_name = calendar.day_name[datetime.date.today().weekday()] dest = '/var/file-store-backup/' + today_name if os.path.exists(dest): subprocess.call(['rm', '-rf', dest]) subprocess.call(['cp', '--reflink=always', '-a', origin, dest]) subprocess.call(['touch', dest]) last = open('/var/file-store-backup/LAST', 'w') print(today_name, file=last) if __name__ == "__main__": main() 

quando l'ho eseguito manualmente, funziona come previsto, creando una directory di backup chiamata dopo il giorno della settimana corrente, ma non viene eseguita quotidianamente: l'ho lasciato all'interno di /etc/cron.daily per 3 giorni e dopo che non è stata creata una directory di backup , il server era in qualsiasi momento.

  • Simulare un errore superblock mancante sul sistema linux EXT4
  • Individuare, trovare, quale - Come posso lanciare un command di indice / scansione per queste utilità?
  • modificare l'indirizzo del destinatario di un'email sul file nella coda di postfix
  • È / etc, / home e / var abbastanza per un backup del server Ubuntu?
  • Inoltra posta in arrivo sul server Linux?
  • Come puoi riallocare lo spazio da un gruppo di volumi a un altro gruppo di volumi in Linux?
  • Le autorizzazioni sono corrette:

     $ ls -l /etc/cron.daily/file-store-backup.py -rwxr-xr-x 1 root root 553 Abr 11 17:19 /etc/cron.daily/file-store-backup.py 

    Il sistema è Ubuntu Server 12.04.2 LTS e la configuration cron non è stata manomessa dall'installazione.

    Perché lo script non viene eseguito?

  • Come programmare un lavoro Cron per il secondo all'ultimo giorno di each mese
  • Qual è la migliore pratica per la comunicazione tra le istanze Amazon EC2?
  • Come posso installare nuovamente il server di produzione live con tempi di inattività minimi?
  • Opzioni di recupero dati per file system unix
  • NFS + NIS è una buona pratica moderna per le reti Linux per get comuni login e directory home?
  • Scheda madre consigliata con attacco hardware per Linux
  • 2 Solutions collect form web for “Perché questo script in cron.daily non verrà eseguito?”

    Questo accade perché il tuo script ha un'estensione .py . I file in /etc/cron.daily vengono eseguiti dal command run-parts (8) ed è predefinito per ignorare i programmi che non corrispondono a varie regole. Devi solo rimuovere l'estensione .py .

    run-parts esegue tutti i file eseguibili denominati all'interno dei vincoli descritti di seguito, trovati nella directory directory. Altri file e directory vengono ignorati in silenzio.

    Se né l'opzione -lsbsysinit né l'opzione -regex vengono dati, i nomi devono essere costituiti interamente da lettere maiuscole e minuscole ASCII, cifre ASCII, sottolineature ASCII e segmenti minuscoli ASCII.

    Per esempio

     touch /etc/cron.daily/test.py chmod +x /etc/cron.daily/test.py run-parts --test /etc/cron.daily /etc/cron.daily/apache2 ... 

    nessun segno di test.py

     mv /etc/cron.daily/test.py /etc/cron.daily/test run-parts --test /etc/cron.daily /etc/cron.daily/apache2 ... /etc/cron.daily/test 

    ta da!

    Non dovrebbe apparire la voce cron 0 * * * 1-7 root /etc/cron.daily/file-store-backup.py

    Di solito non metto lo script effettivo nel file cron, di solito mi riferisco allo script nel file.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.