Newsgroup: it.comp.macintosh
Titolo: crontab per root non avvia processi

Ciao a tutti.
Su OSX SL server ho impostato un crontab per l'utente root.
Cron è in esecuzione:
server:~ root# ps -ax | grep [c]ron
  3899 ??         0:00.14 /usr/sbin/cron
Che fare?
Merci...

 Che fare?
Leggi il log.

 Leggi il log.
Ecco quanto loggato:
server:log root# tail -f cron.log
debug flags enabled: misc
[76553] cron started
log_it: (root 76553) RELOAD (tabs/root)
log_it: (root 76594) CMD (/root/diskspace.sh)
Il comando da eseguire, se eseguito a mano, funziona correttamente e 
contiene:
#!/bin/bash
ADMIN="
al...@miodominio.com
"
ALERT=5
df -H > /tmp/df.out
cat /tmp/df.out | grep Volumes | grep -vE '^Filesystem|tmpfs|cdrom' | 
awk '{ print $5 " " $1 }' | while read output;
do
   usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
   partition=$(echo $output | awk '{ print $2 }' )
   if [ $usep -ge $ALERT ]; then
     echo "Running out of space \"$partition ($usep%)\" on $(hostname) 
as on $(date)" |
      mail -s "Alert: Almost out of disk space $usep" $ADMIN
   fi
done
-------
Cosa può essere la causa di non funzionamento?
Grazie...

 Cosa può essere la causa di non funzionamento?
Potrebbe essere sia che crond non stia girando, a memoria crond non è 
attivo su OS X e deve comunque essere avviato via launchctl che è 
l'autorità unica e suprema, o che ci sia un problema di PATH perché usi 
solo i nomi dei comandi e non il percorso completo, cosa abbastanza 
comune nella mia esperienza di crontab.

 comune nella mia esperienza di crontab.
Intendi i nomi dei comandi *nel* bash script, o la riga di crontab usata 
per avviare lo script stesso? Quest'ultima, infatti, comprende il path 
completo: 19 17 * * * /root/diskspace.sh
Grazie...

 completo: 19 17 * * * /root/diskspace.sh
Ora che mi ci fai pensare il problema dovrebbe essere con i comandi 
richiami nel file crontab, ma l'ambiente del crontab è comunque 
ristretto, anche chiamando uno script bash non sono sicuro che questo 
poi carichi l'ambiente completo (la shell non dovrebbe essere né 
interattiva né di login).
Ad ogni modo metti un 
/usr/bin/env >$HOME/cron.env
in crontab, dai un "source cron.env" e hai il tuo ambiente cron in 
terminale, a questo punto prova a lanciare il comando e vedi se viene 
eseguito.
A memoria i problemi di cron vengono notificati via MTA, hai provato a 
lanciare "mail"?

 eseguito.
In effetti il mio script lanciato a mano dopo il "source cron.env" ha 
funzionato!
Però ciò non significa che funzioni *senza* il "source cron.env", giusto?
Quindi cosa suggerisci di fare?

 Quindi cosa suggerisci di fare?
Incolla l'output di:
sudo crontab -l
ls -l /root/diskspace.sh
sudo mail

 sudo mail
Siccome sono già root:
server:Backups root# crontab -l
* * * * * /usr/bin/env > $HOME/cron.env
30 23 * * * /root/diskspace.sh
....
lascia perdere, sono un tonto!!! Su OSX SL il path non è 
/root/diskspace.sh bensì /var/root/diskspace.sh !!!
Ora funziona...
Perdona la rottura di scatole... grazie per il brainstorming cmq! ;-)
F.

 /root/diskspace.sh bensì /var/root/diskspace.sh !!!
Ti sarebbero dovute arrivare delle email sull'account root per la 
fallita esecuzione.

 fallita esecuzione.
Uhm... ma mi dice "No mail for root"...
Normale?

 Normale?
Secondo me no, aggiungi un comando non esistente alla crontab del tuo 
utente e controlla se ti arrivano email.