Problema script CRON

Salve a tutti!
Ho un problema con degli script cron.
Nella cartella /myscript/ ho due script con permessi di root e u+x:
uno è il seguente:

#! /bin/sh data=`date +%Y%m%d%H%m` tar -czvf prova.$data.tar /var/www/html/cartellasito mv prova.$data.tar /home/server/Desktop/backup/SERVER/ rm -fR printergest.$data.tar

L’altro è:

#! /bin/sh data=`date +%Y%m%d%H%m` mysqldump -uroot -ppwd --opt nomedb > /home/server/Desktop/backup/SERVER/mysqldump_printerdb_$data.sql

Il file /etc/crontab è configurato in questa maniera:

[code]SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

run-parts

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
11 * * * * root run-parts /scriptcron/copy.sh
11 * * * * root run-parts /scriptcron/mysqldumpcron.sh[/code]
Poi i due file sono stati copiati nella cartella /etc/cron.hourly/ per eseguire la copia ogni ora.

La cosa strana è che i due script sono funzionanti, se gli lancio da shell sono perfetti, mentre se gli esegue cron non producono nessun risultato e nemmeno nessun errore.

Dov’è l’inghippo???
Sicuramente mi sta sfuggendo qualcosa, qualcuno può darmi qualche dritta???

Forse faresti meglio ad usare anacron, piuttosto di cron. Questa è la guida ufficiale per la versione 17 ( https://docs.fedoraproject.org/en-US/Fedora/17/html/System_Administrators_Guide/ch-Automating_System_Tasks.html#s1-autotasks-cron-anacron ).


#!/bin/sh
echo "SHELL: $SHELL"
echo "HOME: $HOME"
echo "PATH: $PATH"
echo -n "tar: " ; type -path tar
echo -n "mysqldmp: " ; tye -path mysqldump"

lancialo da terminale e da crontab.

nel frattempo alcune correzioni che torneranno sicuramente utili

probabilmente non sa dove andare a scrivere il tar file.

due soluzioni:

  • scriverlo direttamente nella destinazione finale (ma potrebbero sorgere problemi di spazio)
tar cvzf /home/server/Desktop/backup/SERVER/prova.$data.tgz

oppure usare /tmp come appoggio:

...
SUCCESS=0
DATE=`date '+%F'`  # yyyy-mm-dd
SITO="www.example.com"
BCKDIR="/a/b/c/d/e"
TFILE="/tmp/${SITO}-${DATE}.tgz"
tar cvzf $TFILE .....
cp $TFILE $BCKDIR    # meglio prima copiare e verificare che tutto sia a posto.

if  $? -ne $SUCCESS]
then
                  echo AIUTOOOOOOOOOOOO
                  exit 1
fi
...

probablmente non trova il comando mysqldump.

qui si presenta un altro problema:

la password in chiaro

http://www.techiecorner.com/1619/how-to-setup-mysqldump-without-password-in-cronjob/ un’esemio di come puoi risolvere.

Allora ho modificato gli script inserendo le path complete generando il file tar direttamente nella cartella di destinazione.
Gli script se gli lancio da root sia con le path comlete o mancanti, funzionano alla grande, ma se eseguo crontab non accade nulla!
Una particolarità… La cartella di destinazione è una cartella esterna che si trova su un server nas raid montata in NFS con freenas, potrebbe essere quello in problema???
Che cron non riesce a scrivere sulla cartella???
Gli script vengono eseguiti con permessi di root…

Ottimo suggerimento per la pwd di mysqldmp!!!

il servizio crond è regolarmente attivo ?
output di:

# systemctl status crond.service

[quote=virus]il servizio crond è regolarmente attivo ?
output di:

# systemctl status crond.service [/quote]

Si in esecuzione!!!

Ho provato piu’ volte anche gli script di romulus
Se gli lancio da root tutto apposto, da cron nulla non succede niente, nemmeno un errore.
Nulla nemmeno nel file di log.

devo pulire gli occhiali. :wall:

mi sa che l’errore sta qui.

credo che run-parts richieda una directory come parametro.
se è così, è sufficiente crearne una e spostarci i vari script,
e correggere opportunamente il file crontab.

mkdir /etc/cron.local
mv script1 script2 ... scriptn /etc/cron.local

oppure (soluzione migliore)

considerare root come un’utente qualsiasi, ed usare il comando:

crontab -e

ed il file conterra le seguenti righe:

11 * * * * /scriptcron/copy.sh
11 * * * * /scriptcron/mysqldumpcron.sh

Purtroppo run-parts si occupa proprio di mandare in esecuzione tutti gli script o i programmi contenuti in una directory, qualunque directory, per questo viene usato in crontab.
La cosa che mi fa rabbia almeno mi desse un feedback!!!
Un errore un accidente!

Non è una risposta vera e propria, ma solo un confronto tra la mia macchina e la tua, per vedere le differenze ed i risultati.
(sulla mia crond disabilitato sulla tuo no, io f16 tu ??)

[quote=zhuco]Purtroppo run-parts si occupa proprio di mandare in esecuzione tutti gli script o i programmi contenuti in una directory, qualunque directory, per questo viene usato in crontab.
La cosa che mi fa rabbia almeno mi desse un feedback!!!
Un errore un accidente![/quote]

Ho riletto un po tutto e verificato che anche sul mio portatile non funzionava, dopo una ricerca questo è quello che è venuto fuori:

[mario@benemerita gerix]$ systemctl status crond.service
crond.service - Command Scheduler
	  Loaded: loaded (/lib/systemd/system/crond.service; disabled)
	  Active: inactive (dead)
	  CGroup: name=systemd:/system/crond.service

come suggeriva virus.

mi sono creato uno script di prova in cron.hourly (mi crea un file in /tmp)

devo dire che mi ha fatto patire un po’, dopo averlo abilitato, ma poi sembra che funzioni.
e stranamente, almeno in presenza di anacron, si potrebbe lasciare il file crontab vuoto,
(quello che ho fatto) e se è cosi mi sapetto di trovare il file di controllo ad ogni ora.

Come ho detto, ho riletto tutto, ed in effetti dicevi di aver messo i tuoi script in cron.hourly,
ma le ultime due righe del file crontab sono ingannevoli, e questo è la causa del mio messaggio precedente.

Ho fatto un controllo anche su f17 (per fortuna pooso usae VBox su questo portatile)

creato il file in /etc/crond.hourly
verificato che il servizio sia abilitato (non ne sono sicuro ma penso che lo sia di default)
il file /etc/crontab è vuoto
anacron è installato

fila tutto liscio come l’olio.

mancherebbe la prova del nove:

  • parte a
    commenta tutto in /etc/crontab

  • parte b
    se la macchina è sempre accesa anacron serve a poco,
    rimuovilo e decommenta /etc/crontab

Ho fatto la prova del pirla…
Dentro /etc/cron.hourly ho creato questo script:
Il più semplice possibile…

#! /bin/sh touch /home/server/Desktop/backup/SERVER/prova.txt #Passando per il colegamento presente sul desktop touch /mnt/backup/SERVER/prova2.txt #Accedendo alla cartella direttamente

Ebbene i due file stanno tutti e due nel cartella del nas!!!
Funziona tutto tranne che gli script che mi servono… :mad::mad::mad:

I servizi sono OK, i permessi pure… Bhooo!!!

C’è qualcosa che mi sfugge ma non lo vedo!!!

[quote=zhuco]Ho fatto la prova del pirla…
Dentro /etc/cron.hourly ho creato questo script:
Il più semplice possibile…

#! /bin/sh touch /home/server/Desktop/backup/SERVER/prova.txt #Passando per il colegamento presente sul desktop touch /mnt/backup/SERVER/prova2.txt #Accedendo alla cartella direttamente

Ebbene i due file stanno tutti e due nel cartella del nas!!!
Funziona tutto tranne che gli script che mi servono… :mad: :mad: :mad:

I servizi sono OK, i permessi pure… Bhooo!!!

C’è qualcosa che mi sfugge ma non lo vedo!!![/quote]

file system del nas?

vedi se una cosa del genere ti funziona.


#!/bin/bash

...

if  ! -f /nas/mount/point/dir1/script ]
then
     echo NAS NON MONTATO
     exit 1
fi

/bin/bash /nas/mount/point/dir1/script

...

Posso assicurarti che il nas é montato ed é accessibile.
Il mount viene eseguito in fstab.

  1. ti ho chiesto che file system ha il nas, non hai risposto.

  2. ti ho dato un suggerimento, che il nas sia o no in fstab è sempre meglio che lo script lo verifichi prima di fare una qualsiasi operazione.

  3. hai provato ad inserire in uno script quello che ti ho suggerito (/bin/bash /nas/dir/script-name)?
    Se si, che risultato hai ottenuto?

  4. hai provato a mettere i tuoi script fuori dal nas?

Betty[quote=romulus]1) ti ho chiesto che file system ha il nas, non hai risposto.

  1. ti ho dato un suggerimento, che il nas sia o no in fstab è sempre meglio che lo script lo verifichi prima di fare una qualsiasi operazione.

  2. hai provato ad inserire in uno script quello che ti ho suggerito (/bin/bash /nas/dir/script-name)?
    Se si, che risultato hai ottenuto?

  3. hai provato a mettere i tuoi script fuori dal nas?[/quote]

Giusto giusto…
hai ragione ma in questi giorni é una corsa contro il tempo…
Ti rispondo subito.
Il fs é ufs di openbsd, per la precisione freenas.
Sul controllo che il fs sia montato é giusto fare dei controlli, ma non ho ancora implementato questa cosa, ma ho provato il tuo script e tutto funziona.
Gli script stanno fuori dal nas, per ovvi problemi di permessi.

Al momento tutto funziona.
Certo tutto é migliorabile ma non mi lamento.