我有一个(非常简单的)Windows控制台应用程序,我想使用Wine在Linux服务器上运行。 当我刚刚从terminal通过SSH运行它
wine myapp.exe
一切都很好。 它运行良好,一切都应该和CPU使用率相当低(约5%)。
当我尝试在后台运行时出现问题。 即使是简单的事情
nohup wine myapp.exe
导致CPU使用率上升到100%(一个完整核心)。 redirect输出到/ dev / null等没有帮助。
我试着用下面的设置使用upstart来运行它:
start on runlevel [2345] stop on runlevel [!2345] respawn exec sudo -H -u myuser wine /path/to/my/app.exe &> /dev/null
CPU使用率是100%。 我尝试了更多的select,直到我发现以下版本(使用wineconsole代替wine,将“-b”开关添加到sudo)工作得很好(CPU使用率为5-7%):
exec sudo -b -H -u myuser wineconsole /path/to/my/app.exe
问题是,如果我像这样运行,暴发户不跟踪pid,所以重生等不起作用。 当我将“expect-fork”添加到configuration时,CPU使用率再次上升到100%。 当我将redirect添加到/ dev / null时,CPU使用率上升到100%。 基本上我所做的任何事情都会导致CPU使用率上升到100%。
你有什么想法可能会导致这种影响?
最后find问题的根源和解决方法(虽然解决scheme绝对不是完美的)。
问题实际上是由inputredirect造成的。 当键盘input被replace为/ dev / null时,葡萄酒或程序中的某些东西(我没有调查它)似乎进入一个快速运行的无限循环,这会导致高CPU负载。
我find的解决scheme是将“控制台所有者”添加到Upstartconfiguration,以便将进程连接到控制台。 之后,我甚至能够正确地redirect输出:)
由于该程序在数据中心的专用服务器上运行,因此该设置似乎不会造成任何麻烦。
我遇到过同样的问题。 对我来说解决scheme:首先启动一个Xvfb屏幕,然后导出DISPLAY =:1.0 && wineconsole命令