在Linux环境下部署FlexNet许可证服务器时,启动失败是最常见也最棘手的问题之一。结合我处理过的实际案例,这里梳理了一份完整的排查指南,建议按顺序执行。
启动lmgrd后,通常表现为以下几种情况:
下面按优先级列出最常见的8种原因及对应的排查方法。
现象:执行./lmgrd -c license.lic后报./lmgrd: No such file or directory或Command not found。
原因:FlexNet的lmgrd二进制文件依赖Linux Standard Base(LSB)组件。用ldd lmgrd检查时,会发现/lib64/ld-lsb-x86-64.so.3缺失。
解决:根据发行版安装LSB包:
| 发行版 | 命令 |
|---|---|
| Ubuntu/Debian | sudo apt-get install lsb-core |
| Red Hat/CentOS | sudo yum install redhat-lsb |
安装后用ls -l /lib64/ld-lsb-x86-64.so.3确认链接已创建。
现象:启动后日志报Invalid license key、Cannot find SERVER line或(lmgrd) exit with code。
原因:这是最常见的诱因。常见问题包括:
解决:
现象:启动后进程立即退出,日志中出现port in use或Address already in use。
原因:FlexNet默认使用27000端口。多套FlexNet服务或其它应用占用了该端口。
解决:
现象:启动失败,日志中出现Permission denied或Can't open license file。
原因:
解决:

现象:启动时报告Cannot find hostname或Invalid host。
原因:license文件中SERVER行的主机名或MAC地址与服务器实际配置不一致。
解决:
现象:启动命令执行后无响应,或新进程启动后立即被终止。
原因:上一次未正常关闭的lmgrd或vendor daemon进程仍在运行,占用了端口或锁文件。
解决:
现象:启动时报relocation error: symbol errno, version GLIBC_2.0 not defined。
原因:lmgrd编译时依赖的GLIBC版本与当前系统不匹配,常见于较新的Linux发行版上运行旧版FlexNet。
解决:在启动命令前加LD_ASSUME_KERNEL=2.4:LD_ASSUME_KERNEL=2.4 ./lmgrd -c license.lic -l debug.log。
现象:进程看起来在运行,ps能看到lmgrd,但所有客户端都无法连接。
原因:服务器新增了虚拟网卡、修改了静态IP或网卡顺序发生了变化,FlexNet绑定的旧网卡IP失效,服务启动后无法完成网络监听。
解决:
| 步骤 | 检查项 | 命令/方法 |
|---|---|---|
| 1 | 查看日志 | 打开debug.log或lmgrd.log,拉到最后10行 |
| 2 | 手动启动看输出 | ./lmgrd -c license.lic -l debug.log |
| 3 | 检查LSB依赖 | ldd lmgrd看是否有ld-lsb-x86-64.so.3缺失 |
| 4 | 校验许可证文件 | lmutil lmcksum -c license.lic |
| 5 | 检查端口占用 | netstat -anp | grep 27000 |
| 6 | 检查残留进程 | ps -ef | grep lmgrd |
| 7 | 检查文件权限 | ls -l lmgrd license.lic |
| 8 | 检查主机名/MAC | hostname和ifconfig -a |
最后提醒:不要反复点击启动按钮而不看日志。日志里一定有线索,debug.log的最后10行通常直接指向根因。如果日志没有生成,用手动启动命令代替服务脚本,能看到完整的控制台输出。
排查顺序建议按上述1到8执行,其中LSB依赖、许可证文件格式、端口占用这三个原因覆盖了80%以上的启动失败场景。