Warum wird meine Upstart $ JOB-Variable nicht interpoliert?

552
jcomeau_ictx

Ich habe upstart auf einem Debian 7.8-System installiert, aber zuletzt habe ich überprüft, dass dies auch auf einem Ubuntu 11-System nicht funktioniert. Ich habe meine Jobs mit sudo am Laufen, möchte es aber gerne richtig machen. Hier ist meine .conf-Datei:

start on stopped RUNLEVEL=[2345] stop on runlevel [!2345] setuid newuser respawn pre-start exec logger "pre-start JOB $JOB in HOME $HOME" script logger "start JOB $JOB in HOME $HOME" echo "DEBUG start: `env`" >> /tmp/$JOB_env.log timeout 360m $HOME/scripts/$JOB.py \ >/tmp/$JOB.log 2>&1 || mail -s "error in $JOB.conf" \ me@my.com < /tmp/$JOB.log end script post-stop exec sleep 60 

Die Logger-Aufrufe sind vollständig und ergeben:

Mar 7 15:56:13 vps39987 logger: pre-start JOB in HOME  Mar 7 15:56:13 vps39987 logger: start JOB in HOME 

/ tmp enthält kein * _env.log und / var / log / upstart / enthält keine Datei für $ JOB.

Ich erhalte E-Mails mit Betreff error in .confund Inhalttimeout: failed to run command '/scripts/.py': No such file or directory

irgendwelche Ideen? Ich bin verblüfft

[Anmerkung: Ich habe die setuidZeile auskommentiert und immer noch keine Freude]

0

1 Antwort auf die Frage

0
jcomeau_ictx

Obwohl ich immer noch nicht weiß, warum $JOBnicht erweitert wird, habe ich es for line in $(env); do logger env $line; donein der scriptZeilengruppe gefunden, die $UPSTART_JOB gerade gesetzt wird. Ich habe die fehlende $ HOME-Variable auf eine andere Art und Weise gelöst, die für das Setup meines Kunden spezifisch ist.