start-stop-daemon 可以使用环境变量吗?

sco*_*n11 10 linux ubuntu daemon environment-variables pid

我需要守护在 Wine 中运行的 Windows 应用程序,并在/var/run. 由于它需要 X11 会话才能运行,因此我需要确保在运行用户的环境中设置了 $DISPLAY 变量。

假设我已经有一个 X11 会话在运行,并带有给定的显示,下面是我的/etc/init.d脚本中的 start-stop-daemon 行:

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
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在 Ubuntu 8.04 上的 start-stop-daemon 版本没有-e设置环境变量的选项。我认为您可以在命令之前简单地设置 $DISPLAY,如下所示:

VAR1="Value" start-stop-daemon ...
Run Code Online (Sandbox Code Playgroud)

但它不起作用。由于我使用该-c {user}选项以特定用户身份运行,因此我猜测有一个环境切换并且 VAR1 丢失了。我试过从正在运行的用户.profile和/或导出 DISPLAY,.bashrc但它也不起作用。

有没有另一种方法可以做到这一点?这甚至可能吗?我是否忽略了什么?

小智 21

您可以使用env来修改环境:

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
Run Code Online (Sandbox Code Playgroud)


Ted*_*ddy 3

您可以编写一个 shell 脚本来设置变量,然后运行 ​​wine。