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.

  • Comandi comandi utili su Unix
  • I formati di cartelle di grandi size rallentano le performance IO?
  • Installare rsync sul server VMware ESX 4.1
  • CentOS Server non si riavvia quando si esegue il command di riavvio
  • Come hai implementato la gestione del log sui tuoi server?
  • Qual è la differenza tra parentesi quadre doppie e singole in bash?
  • 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?

  • Qual è il modo più veloce per installare Python 2.6 su un server Ubuntu 8.04?
  • Più di 3 secondi "tempo di connessione iniziale" (webpagetest.org)
  • Perché iptables non passa i pacchetti?
  • ACL estesi non sempre ereditati
  • Attacco riflesso amplificato sui server DNS
  • Forza scavo per risolvere senza utilizzare la cache
  • 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.