Ho installato incron dal repository EPEL (prima di chiedere; Sì, ho anche provato a scaricare l'origine e compilare localmente, stessi risultati) e sto tentando di impostare un processo sul mio CentOS 6.4 scatola (finale) virtuale che ho prototipato con successo sul mio locale Ubunto 12.04 macchina:incrond in esecuzione ma non eseguendo il comando in CentOS 6.4
Alcune informazioni in anticipo:
- SELinux è impostato PERMISSIVE
- ho aggiunto il mio script (s) e chiamati eseguibili a tutti con NOPASSWD utilizzando
visudo
per aggirare alcuni problemi di permessi ...
Se invoco il mio script dalla riga di comando con sudo /path/to/my/script.sh arguments
funziona come un incantesimo.
sudo service incrond status
verifica che l'incrond sia in esecuzione. root e myusername vengono aggiunti a /etc/incron.allow
, /etc/incron.deny
è vuoto.
mio incrotab per root è:
/path/to/dropfolder/ IN_CLOSE_WRITE sudo /path/to/my/script.sh [email protected]/$#
Eventi a /path/to/dropfolder/
risultato a proprio nulla accade. Nessun log viene generato, nessun messaggio, nessuna azione si verifica sui file nella cartella.
Così ho studiato: è stato suggerito che cron
viene eseguito in un ambiente minimale e che per eseguire complessi comandi/script potrebbe essere necessario eseguire il .bashrc
e/o esportare il PATH all'inizio del comando cron.
Nota: posso trovare alcuna documentazione di supporto che incron
corre anche in un ambiente minimale, ma come il mio google-fu non è riuscito a portare a nessun risultato utile, inerenti direttamente alla incron
ho pensato WTH (e bing-fu!) , Ci proverò!
Edit: documentazione indica che incron
fuga da tabelle di sistema o radice prende env dal suo ambiente ospite, quindi solo incron
eseguita da utenti non-root dovrebbe richiedere alcun tipo di ENV o PATH giocherellare
Così & hellip; incrontab per root:
/path/to/dropfolder IN_CLOSE_WRITE . /home/myusername/.bashrc; export PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin; sudo /path/to/my/script.sh [email protected]/$#"
Nessun dadi & hellip; provato &&
anziché ;
= nessun dado. Se riesci a pensare ad una variazione su quanto sopra, probabilmente l'ho provato e hellip;
Quindi, proviamo un po 'di azione restorecond -R /usr/sbin/incrond /etc/incron*
! Huh, nessun cambiamento neanche lì. service incrond stop
seguito da service incrond start
e quindi service incrond restart
e hellip; no, no e no.
misure drastiche: yum remove incron
e yum install incron
, chkconfig incrond on
e poi per buona misura un sudo reboot
!
Niente.
Non riesco a ottenere nulla da /tmp/ IN_ALL_EVENTS echo boo>>/home/myusername/boofile.txt
, quindi la mia impossibilità di fare anche un env>>envfile.txt
per verificare se incron
è in esecuzione in un ambiente sparse & hellip; (Vedi sopra nota)
Eppure: service incrond status
cede incrond (pid xxxx) is running...
Che cosa mi manca? Deve essere grande ed evidente e spero che qualcuno possa farmi sentire un idiota in breve tempo!
un ulteriore esame di /var/log/cron
produce risultati come questo: Aug 14 15:05:30 hostname incrond[1584]: (root) CMD (sudo /path/to/DropFolder/script/subfolder/script-Beta-1.sh /home/username/DropFolder/testfile.file)
-Si ho fatto che il mio copione era eseguibile ..
così incrond è infatti tentando di fare qualcosa, ma non ottengo alcuna uscita da nessuna parte ... anche un semplice echo > /dev/pts/0
produce risultati nada.
- ringraziamenti per la riparazione il mio schifo formattazione lavoro
Grazie, ho avuto un problema diverso, ma io trovato facendo: 'tail -f/var/log/cron | grep --line-buffered incron' e ho notato che ogni comando viene eseguito due volte, ma questo è un altro problema .. :) – Niclas