+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

[CentOs7] Crontab non funzionante

  1. #1
    ljt
    ljt non è in linea Scolaretto
    Salve,

    ho creato una copia con rsync con i seguenti parametri:
    rsync -a root@192.168.2.75:/srv/MIOdb/MIODB.gdb /srv/backup/MIODB/MioDb-$(date +"%d-%m-%Y-%H:%M:%S").gdb > /srv/backup/MioDB/backup.log 2>&1
    
    Da riga comando funziona perfettamente, mi crea un file nella destinazione con data e ora della copia.

    File Sorgente: MIODB.gdb
    File Destinazione: MIODB-21-05-2021-21:10:01

    Inserendo tale comando nel crontab, però, non viene eseguito. Sembra che i paramtri $(date etc etc) non siano di suo gradimento.

    Dove sta l'errore?

    Grazie

    P.S. Ovviamente il pc sorgente e quello di destinazione hanno le chiavi scambiate per accettare le connessioni senza inserire la password.

  2. #2
    Non hai postato il contenuto della schedulazione di CRON

    Comunque, in linea di massima, ti prepari uno script (#!/bin/bash) con all'interno le operazioni da eseguire, dai i permessi di esecuzione al file, lo provi, ed infine crei una schedulazione per farlo eseguire.
    ℹ️ Leggi di più su Fix ...

  3. #3
    ljt
    ljt non è in linea Scolaretto
    Quote Originariamente inviato da Fix Visualizza il messaggio
    Non hai postato il contenuto della schedulazione di CRON

    Comunque, in linea di massima, ti prepari uno script (#!/bin/bash) con all'interno le operazioni da eseguire, dai i permessi di esecuzione al file, lo provi, ed infine crei una schedulazione per farlo eseguire.
    Questo è il comando inserito nel cron:
    20 21 *** rsync -a root@192.168.2.75:/srv/MIOdb/MIODB.gdb /srv/backup/MIODB/MioDb-$(date +"%d-%m-%Y-%H:%M:%S").gdb > /srv/backup/MioDB/backup.log 2>&1
    
    Comunque non è un problema di cron in quanto eliminando la parte:
    rsync -a root@192.168.2.75:/srv/MIOdb/MIODB.gdb /srv/backup/MIODB/MioDb-$(date +"%d-%m-%Y-%H:%M:%S").gdb
    
    Il comando funziona.

    Per quanto riguarda lo script, non essendo molto "linux like", vorrei evitarlo.

    Grazie

  4. #4
    Non si tratta di essere "linux like", si tratta di non creare confusione.

    Un file di script lo crei banalmente con "nano nomefile" o "nano /percorso/filename"

    Ad esempio, puoi crearti una cartella personale di scripts, con "mkdir /opt/scripts"

    Poi all'interno della cartella /opt/scripts crei un file con "nano /opt/script/copiamiodb.sh"

    All'interno del file (ti aprirà il file in modifica con nano) scrivi banalmente:
    #!/bin/bash
    
    rsync -a root@192.168.2.75:/srv/MIOdb/MIODB.gdb /srv/backup/MIODB/MioDb-$(date +"%d-%m-%Y-%H:%M:%S").gdb > /srv/backup/MioDB/backup.log 2>&1
    
    Poi con "ctrl+o" (o di Otranto) salvi le modifiche al file e con "ctrl+x" esci.

    Quindi dai i permessi di avvio con "chmod +x /opt/scripts/copiamiodb.sh"

    Infine se usi "crontab -e" per aggiungere la schedulazione, basterà inserire:
    "20 21 * * * /opt/scripts/copiamiodb.sh"
    

    Fatta questa premessa, il MAN di CRONTAB recita:
    The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
    Ovvero, che devi usare l'escape "\" davanti ai simboli percentuale, altrimenti saranno interpretati come nuova riga.

    Io comunque ti suggerisco di strutturare le schedulazioni tramite scripts separati.
    ℹ️ Leggi di più su Fix ...

  5. #5
    ljt
    ljt non è in linea Scolaretto
    Quote Originariamente inviato da Fix Visualizza il messaggio
    il MAN di CRONTAB recita:

    Ovvero, che devi usare l'escape "\" davanti ai simboli percentuale, altrimenti saranno interpretati come nuova riga.

    Io comunque ti suggerisco di strutturare le schedulazioni tramite scripts separati.
    In effetti inserendo il comando escape il tutto funziona.
    Dunque il comando diventa:
    20 21 * * * rsync -a root@192.168.2.75:/srv/MIOdb/MIODB.gdb /srv/backup/MIODB/MioDb-$(date +"\%d-\%m-\%Y-\%H:\%M:\%S").gdb > /srv/backup/MioDB/backup.log 2>&1
    
    Per quanto riguarda lo script è ok.
    Al posto di nano ho usato vim o più semplicemente vi, anche se è abbastanza irrilevante, ma nel caso questo post dovesse tronare utile a qualcuno è sempre meglio un'informazione in più che in meno.

    Ti ringrazio per l'aiuto molto dettagliato e preciso, una vera e propria guida più che un thread.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Query non funzionante su vb6 ma funzionante su phpmyadmin
    Da qweasdzxc nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 10-05-2018, 17:09
  2. Overlay non funzionante
    Da guil nel forum HTML, CSS e JavaScript
    Risposte: 0
    Ultimo Post: 14-01-2018, 01:17
  3. Problemi con crontab
    Da Fabio_ nel forum Tutto Linux
    Risposte: 0
    Ultimo Post: 26-02-2010, 16:12
  4. VPN non funzionante...
    Da ganzos nel forum Networking e sicurezza
    Risposte: 24
    Ultimo Post: 31-12-2009, 18:31
  5. [SQL]Select non funzionante
    Da FEFE nel forum Altri Database Server
    Risposte: 2
    Ultimo Post: 05-11-2009, 17:22