Pagina 1 di 1

crontab e script sh

Inviato: giovedì 21 dicembre 2017, 13:16
da peps
Ciao a tutti e scusatemi questa domanda, ma non riesco a capire il comportamento.

Ho uno script sh che vorrei far girare ogni tot minuti.

Codice: Seleziona tutto

 #!/bin/sh

minetest="/home/XXXX/minetest/bin/"
process=`ps uxw | grep minetest | grep -v grep | awk '{print $11}'`

if [ -z "$process" ]; then

  echo "Couldn't find MINETEST running, restarting it."
  cd "$minetest"
  /usr/bin/screen -A -m -d -S minetest ./minetest --server --world Lord-of-the-Test --config ../minetest.conf --gameid Lord-of-the-Test  --logfile ../Lord-of-the-Testlog.log
  echo "Server Started"

fi
se lanciato a mano fa egregiamente il suo lavoro.

se inserisco la stringa

Codice: Seleziona tutto

* * * * * /home/XXX/minetestlott.sh > /home/XXX/cronlog.log
nel crontab non fa niente, ma niente di niente e il file di log (che viene creato) e' vuoto.

i path mi sembrano tutti corretti.

versione ubuntu 16.04.

Come faccio a capire dove sbaglio? Grazie dell'aiuto.

Re: crontab e script sh

Inviato: giovedì 21 dicembre 2017, 13:39
da pachisapiu
se lo lanci manualmente va ?

Re: crontab e script sh

Inviato: giovedì 21 dicembre 2017, 13:50
da thece
[Rieditato]

:ciao:

La riga inserita nel crontab è sicuramente da rivedere. Temporalmente, quando deve essere eseguito il tuo script?



Poi, per non saper ne leggere, ne scrivere, in cima allo script io ci metterei

Codice: Seleziona tutto

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
(se lo script viene eseguito come utente non privilegiato)

Codice: Seleziona tutto

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
(se lo script viene eseguito come root)

Se anche questo non dovesse funzionare occorrerebbe entrare nel merito dello script

Re: crontab e script sh

Inviato: giovedì 21 dicembre 2017, 15:24
da peps
L’esecuzi È attualmente ogni minuto per troubleshooting.
Provo ad aggiungere la stringa del path, ma tutto gira nella /home dell’utente che deve eseguire lo script.
Lo script controlla se un processo è in esecuzione e in caso negativo lo lancia.

Re: crontab e script sh

Inviato: giovedì 21 dicembre 2017, 17:08
da thece
Modifica la direttiva nel crontab così

Codice: Seleziona tutto

* * * * * /home/XXX/minetestlott.sh > /home/XXX/cronlog.log 2>&1
in questo modo l'output dello script, diretto sia verso standard output che verso standard error, verrà scritto correttamente sul file /home/XXX/cronlog.log



Per il resto direi che bisogna debuggare pesantemente lo script. Non ti resta che inserire tanti bei echo :D
Come ti ho scritto in precedenza, non sono entrato nel merito dello script, quindi la customizzazione della variabile di ambiente PATH era solo un suggerimento "buttato là". Spesso risolve poichè la variabile PATH impostata per crontab è molto restrittiva e non permette di raggiungere molti comandi. E' evidente che nel tuo caso questa cosa non vale.