修改license文件后要不要重启lmgrd?这个问题几乎每个FlexNet运维都会遇到,而且答案不是简单的“是”或“否”。
取决于你改了哪一行。
有些改动可以热加载,不需要中断服务。有些改动必须重启,没有商量余地。下面把规则拆开讲清楚。
如果你改的是FEATURE行或INCREMENT行里的内容,不需要重启lmgrd。
常见的场景包括:
这些改动本质上只是更新了“许可证池”的内容,lmgrd的主框架没变,vendor daemon也没变。执行lmreread命令,让lmgrd重新读一遍license文件就行了。
命令格式:
text
lmutil lmreread -c /path/to/license.lic如果lmreread命令执行成功,debug.log里会出现类似下面的记录:
text
(lmgrd) Re-reading license file ...
(lmgrd) Reread of license file succeeded这里有个关键点: lmreread只对license文件本身生效。如果你改了options文件(比如调整了TIMEOUT超时时间),执行lmreread不会让它生效。这一点很多人踩过坑,后面会单独说。
Windows用户注意: LMTOOLS的Start/Stop/Reread标签页里有一个“Reread License File”按钮,点一下就能完成同样的操作。

下面这些改动,lmreread处理不了。因为不是“内容变了”,而是“运行方式变了”。
第一类:改了SERVER行
SERVER行定义的是许可证服务器的身份——主机名、MAC地址、端口号。换了一个端口,或者服务器换了网卡需要改MAC,lmgrd的运行环境已经变了。这和license文件里的feature内容无关,是服务本身的配置变更。必须重启。
text
# 原行
SERVER my-server 001122334455 27000
# 改成
SERVER my-server 001122334455 27001改了端口,防火墙要调,客户端配置要改,lmgrd也要重启才能监听新端口。
第二类:改了VENDOR行(或DAEMON行)
VENDOR行指定了vendor daemon的路径或端口。如果你升级了SCL工具包,vendor daemon换了位置,或者你在VENDOR行里加了PORT=参数来固定端口——这些都属于vendor daemon启动参数的变化。lmgrd需要重新拉起vendor daemon,直接用新的参数。
第三类:换了整个license文件
有些情况下,厂商发来的新license文件不仅是内容变化,连VENDOR行的定义都变了——比如换了vendor daemon版本,或者新增了某些依赖项。稳妥起见,这种情况建议直接重启。虽然有时候lmreread也能读,但重启更干净,可以避免一些隐藏的兼容性问题。
options文件(.opt)的加载机制比较特殊,值得单独说。
options文件是通过VENDOR行来引用的:
text
VENDOR synopsys /opt/synopsys/snpslmd OPTIONS=/opt/flexnet/synopsys.opt如果你改了options文件里的内容——比如把TIMEOUT从3600改成了7200,或者新增了一条EXCLUDE规则——执行lmreread不会让它生效。
这可能是FlexNet设计上的一个疏忽,也可能是有意为之。无论如何,实际经验是:改完options文件后,要么重启整个lmgrd服务,要么用lmreread之后再多做一步——在LMTOOLS里先Stop Server再Start Server。总之,确保vendor daemon重新加载了options文件。
如果你不确定options文件是否真的加载了,可以在debug.log里搜索options关键字。正常加载的话,日志里会出现类似Using options file: /path/to/synopsys.opt的记录。
判断规则可以总结成一句话:
改了license文件里“行”的内容,用lmreread。改了“行”本身(端口、路径、引用),重启。
具体来说:
| 改动类型 | 处理方式 | 是否中断服务 |
|---|---|---|
| 新增/删除FEATURE行 | lmreread | 否 |
| 修改过期日期 | lmreread | 否 |
| 修改并发数量 | lmreread | 否 |
| 修改SERVER行的端口 | 重启 | 是 |
| 修改VENDOR行的路径或端口 | 重启 | 是 |
| 修改options文件 | 重启(或Stop/Start) | 是 |
如果你确认必须重启,记住两个原则:

第一,不要暴力杀进程。 用lmdown优雅关闭,让lmgrd通知所有vendor daemon正常退出,释放端口和临时文件。直接kill -9可能导致端口残留、临时文件没清理,下次启动时报端口占用。
第二,重启前看一眼debug.log。 有些问题在lmreread失败时就会暴露——比如新license文件格式有问题,或者签名校验失败。先跑一次lmreread,如果报错就原地排查,不要直接重启。重启只是让服务重新加载文件,不会解决文件本身的问题。
如果用的是systemd管理服务,重启命令很简单:
text
sudo systemctl restart flexnet如果用的是LMTOOLS,在Start/Stop/Reread标签页里依次点Stop Server和Start Server。
修改license文件后,优先试试lmreread——它不中断服务,执行快,而且能帮你提前发现license文件是否有问题。只有在lmreread不支持或明确需要重启的场景下,才走完全重启的流程。
一个简单的判断习惯: 改的是FEATURE和INCREMENT,用lmreread。改的是SERVER和VENDOR,重启。改的是options文件,重启。记住这三条,基本不会出错。