我有一个(非常简单的) Windows控制台应用程序,我想使用葡萄酒在Linux服务器上运行它。当我在SSH的终端上运行它的时候
wine myapp.exe一切都很好。它运行良好,做它应该做的一切,并且CPU使用率很低(大约5%)。
当我试图在后台运行它时,问题就开始了。甚至像这样简单的事情
nohup wine myapp.exe导致CPU使用率飙升到100% (一个完整的核心)。将输出重定向到/dev/null等无助于此。
我尝试使用upstart使用以下设置来运行它:
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec sudo -H -u myuser wine /path/to/my/app.exe &> /dev/nullCPU使用率为100%。我尝试了几种选择,直到我发现下面的版本(使用葡萄酒而不是葡萄酒和添加到sudo中的"-b“开关)工作得很好(CPU使用率5-7%):
exec sudo -b -H -u myuser wineconsole /path/to/my/app.exe问题是,如果我像这样运行它,暴发户无法跟踪pid,因此恢复等就不起作用了。当我在配置中添加“expect-叉”时,CPU的使用率再次上升到100%。当我将重定向添加到/dev/null时,CPU使用率上升到100%。基本上,我所做的任何事情都会导致CPU使用率上升到100%。
你有什么想法会导致这种影响吗?
发布于 2014-02-11 17:36:02
最后找到了问题的来源和解决方案(尽管解决方案肯定不是完美的)。
这个问题实际上是由输入重定向引起的。当键盘输入被/dev/null替换时,葡萄酒或程序(我没有对其进行调查)中的一些东西似乎进入了一个快速运行的无休止循环,这会导致较高的CPU负载。
我发现的解决方案是将“控制台所有者”添加到Upstart配置中,以便将进程连接到控制台。之后,我甚至能够正确地重定向输出:)
由于该程序运行在数据中心中的专用服务器上,此设置似乎不会造成任何麻烦。
发布于 2015-04-06 22:27:56
我也有过同样的问题。解决方案:首先启动Xvfb屏幕,然后导出DISPLAY=:1.0 && wineconsole命令
https://serverfault.com/questions/573350
复制相似问题