Le démon start-stop peut-il utiliser des variables d'environnement?

10

J'ai besoin de démonifier une application Windows exécutée dans Wine et de créer un pid /var/run. Puisqu'il nécessite une session X11 pour fonctionner, je dois m'assurer que la variable $ DISPLAY est définie dans l'environnement de l'utilisateur en cours d'exécution.

En supposant que j'ai déjà une session X11 en cours d'exécution, avec un affichage donné, voici à quoi ressemble la ligne start-stop-daemon dans mon /etc/init.dscript:

start-stop-daemon --start --pidfile /var/run/wine-app.pid -m -c myuser -g mygroup -k 002 --exec /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe

Malheureusement, ma version de start-stop-daemon sur Ubuntu 8.04 n'a pas la -epossibilité de définir des variables environnementales. Je suppose que vous pouvez simplement définir $ DISPLAY avant la commande, comme ceci:

VAR1="Value" start-stop-daemon ...

Mais ça ne marche pas. Puisque j'utilise l' -c {user}option pour exécuter en tant qu'utilisateur spécifique, je suppose qu'il y a un commutateur d'environnement et VAR1 est perdu. J'ai essayé d'exporter DISPLAY depuis l'utilisateur en cours d'exécution .profileet / ou .bashrcmais cela ne fonctionne pas non plus.

Y a-t-il une autre façon de procéder? Est-ce seulement possible? Suis-je en train d'oublier quelque chose?

scottburton11
la source

Réponses:

3

Vous pouvez écrire un script shell pour définir la variable, puis exécuter wine.

Teddy
la source
Je n'ai pas eu l'occasion de mettre cela en pratique, mais j'ai écrit le script et cela semble être la meilleure façon de procéder. Merci pour le conseil!
scottburton11
21

Vous pouvez utiliser envpour modifier l'environnement:

start-stop-daemon --start --pidfile /var/run/wine-app.pid -m -c myuser -g mygroup -k 002 --exec /usr/bin/env VAR1="Value" /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe
Jakob
la source