在Windows环境下使用LMTOOLS配置FlexNet许可证服务器时,最令人头疼的问题莫过于:服务配置好了,点击Start Server,显示启动成功,但几秒钟后服务又自动停止了。 或者更隐蔽的情况——LMTOOLS界面显示服务正在运行,但客户端就是连不上。
这篇文章从根本原因出发,提供一套完整的排查方法。
LMTOOLS中配置Windows服务时,常见的问题现象包括以下几种:
不要反复重启服务而不看日志。
debug.log是定位问题的第一手资料。默认情况下,日志文件路径在LMTOOLS的"Config Services"标签页中配置。
打开debug.log,查看最后几行。常见的日志错误和对应原因如下:
| 日志内容 | 问题类型 |
|---|---|
(lmgrd) Failed to open the TCP port number in the license. | 端口被占用 |
(lmgrd) Can't make directory /usr/tmp/.flexlm | 临时目录权限不足 |
(lmgrd) Cannot find lmgrd or license file | 路径不正确 |
(vendor) exited with status 53 | 缺少VC++运行库 |
(vendor) exited with status 28 | 端口冲突或权限不足 |
(lmgrd) The license file(s) and/or lmgrd were not found | lmgrd路径配置错误 |
这是新版LMTOOLS(11.16及以上)最常见的问题。LMTOOLS在创建Windows服务时,默认将服务配置为 "本地服务账户"(Local Service Account) 运行。该账户权限较低,无法正常启动vendor daemon或写入日志。
排查方法:
如果显示为 "本地服务账户" 或 "Network Service" ,这很可能是问题根源。
解决方法:
修改后,服务就能以系统最高权限运行,解决大多数权限相关问题。
FlexNet对路径中的字符比较敏感。如果lmgrd、许可证文件或日志文件所在的路径包含中文、空格、括号等特殊字符,服务可能无法正常启动。
常见错误路径示例:
解决方法:
将lmgrd、许可证文件和日志目录全部放在不含空格、不含中文、不含特殊符号的路径下。建议使用类似以下结构:
text
C:\flexnet\lmgrd.exe
C:\flexnet\license.lic
C:\flexnet\logs\debug.logFlexNet默认使用27000端口作为lmgrd的主端口,vendor daemon使用动态端口。如果27000端口被其他进程占用,lmgrd无法启动。
排查方法:
在命令行中执行:
text
netstat -ano | findstr 27000如果输出结果显示该端口被其他进程(PID)占用,说明端口冲突。
解决方法:
lmgrd启动时需要写入debug.log。如果日志目录不存在,或运行服务的账户对该目录没有写入权限,服务会启动失败。
排查方法:
解决方法:
LMTOOLS中"Path to the lmgrd.exe file"和"Path to the license file"必须指向正确的文件。
排查方法:
特殊注意:不同软件的FlexNet包中,lmgrd的版本和位置可能不同。例如Synopsys SCL的lmgrd在/scl/linux64/bin/下,而某些软件厂商的lmgrd直接放在安装根目录的bin/下。不要混用不同厂商的lmgrd——用某个软件包自带的lmgrd去启动另一个软件的许可证,可能导致vendor daemon无法正常工作。
解决方法:
点击LMTOOLS中"Config Services"标签页的"Browse"按钮,重新选择正确的文件路径。
上一次未正常关闭的lmgrd或vendor daemon进程仍然在运行,占用了端口或锁文件。
排查方法:
在任务管理器中查看是否有lmgrd.exe或vendor daemon(如adskflex.exe、snpslmd.exe等)进程在运行。如果存在非当前服务的lmgrd进程,说明有残留。
解决方法:
FlexNet 11.16及以上版本依赖 Microsoft Visual C++ 2015-2022 Redistributable。如果系统中缺少该运行库,lmgrd或vendor daemon启动时会立即退出,日志中可能出现类似exited with status 53的错误。
解决方法:
从微软官方网站下载并安装"Visual C++ Redistributable for Visual Studio 2015-2022"(x64和x86版本都安装)。
某些安全软件会将lmgrd.exe或vendor daemon识别为潜在威胁并阻止其运行,或阻止其写入日志文件。
排查方法:
解决方法:
将lmgrd.exe、vendor daemon.exe以及整个FlexNet安装目录加入杀毒软件的白名单/排除列表。
如果以上方法都无法解决问题,可以在Windows事件日志中查找线索。
查看方法:
常见的异常代码:
卸载或重新安装FlexNet服务时,如果未完全清理注册表,可能导致新服务配置与旧注册表项冲突。
解决方法:
当服务无法正常启动时,最可靠的方法是完全删除并重新配置:
第1步:清理所有进程
在任务管理器中终止所有lmgrd.exe和vendor daemon进程。
第2步:删除现有服务
在LMTOOLS的"Config Services"中:
第3步:检查并清理注册表(可选)
按Win+R,输入regedit,导航至:
text
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FlexLM License Manager如果有该服务的残留键值,删除。
第4步:重新配置服务
在LMTOOLS的"Config Services"中:
第5步:修改服务登录账户
第6步:启动服务
| 步骤 | 检查内容 | 方法 | 优先级 |
|---|---|---|---|
| 1 | 查看debug.log | 打开日志,查看最后几行错误信息 | 🔴 最高 |
| 2 | 检查服务登录账户 | services.msc → 属性 → 登录 → 改为"本地系统账户" | 🔴 高 |
| 3 | 检查路径中是否含中文/空格 | 确认路径纯英文、无空格、无特殊字符 | 🔴 高 |
| 4 | 检查端口是否被占用 | netstat -ano | findstr 27000 | 🔴 高 |
| 5 | 检查日志目录权限 | 确认目录存在且可写 | 🟡 中 |
| 6 | 检查lmgrd和license路径 | 确认文件存在且路径正确 | 🟡 中 |
| 7 | 清理残留进程 | 任务管理器终止所有lmgrd.exe | 🟡 中 |
| 8 | 检查杀毒软件 | 临时禁用或将FlexNet目录加入白名单 | 🟡 中 |
| 9 | 安装VC++运行库 | 安装Visual C++ Redistributable 2015-2022 | 🟢 低 |
| 10 | 查看Windows事件日志 | eventvwr.msc → 应用程序日志 | 🟢 低 |
最重要的原则:先看debug.log。 日志里的错误信息直接告诉你问题在哪,绝大多数情况下不需要盲目尝试各种"偏方"。
如果debug.log没有生成,说明lmgrd连写入日志的权限都没有——通常是路径权限问题或服务账户权限问题。
如果debug.log生成了但内容为空,说明lmgrd启动了但立即退出——通常是依赖库缺失或端口冲突。
按照上述排查顺序逐一检查,大多数LMTOOLS服务问题能在30分钟内解决。