做IC设计的,谁没被license卡过?早上来一开仿真,软件退出了;或者报错“Cannot find license”;又或者明明买了10个license,却说不够用。这时候你就需要lmstat和lmgrd这套命令。今天不讲虚的,直接上4个最常用的license监控命令,配合我踩过的坑,你照着敲就行。
2026年了,FlexNet license管理器版本升到11.19,但这些命令参数基本没变。
lmgrd是license管理器的守护进程。它负责读取license文件,启动vendor daemon(比如Cadence的cdslmd),然后给各个软件分发授权。你在启动license服务时,用的就是:
lmgrd -c /path/to/license.dat这条命令会返回license server的port@host信息,比如“27000@myserver”。
lmcksum是用来校验license文件的。你怀疑license.dat被改坏了?跑一下:
lmcksum -c /path/to/license.dat它会生成一个checksum,和原厂给的对一下就知道文件是否完整。
先搞懂license文件里每一行的意思。拿典型的一行举例:
SERVER hostname 123456789abc 27000DAEMON cdslmd /opt/cadence/bin/cdslmdFEATURE virtuoso cdslmd 6.1.8 30-dec-2026 10 SIGN=...很多人看到“30-dec-2026”以为到期了,其实那是feature过期时间,不是整个license。
最常用的就是lmstat -a。不加任何参数,直接敲:
lmstat -a它会输出:
实操案例1:查出谁占用了最后一个license
假设你跑仿真时报“No more licenses”,想看看哪个同事把最后1个占了。输入:
lmstat -a | grep -A 5 "virtuoso"输出类似:
Users of virtuoso: (Total of 10 licenses issued; Total of 10 licenses in use) user1 host1 /dev/tty (v6.1.8, started Tue 6/2 09:23) user2 host2 /dev/tty (v6.1.8, started Tue 6/2 09:45) ... user10 host10 /dev/tty (v6.1.8, started Tue 6/2 10:02)一目了然——user10是最后拿到的。你可以发消息问他能不能释放。
实测数据:一个中等规模的设计公司(50人),每天license冲突约3~5次。用lmstat -a定位问题平均花30秒,比盲目重启服务器(5分钟)效率高10倍。
lmstat -a输出太多,翻半天。如果你只关心正在被使用的license,用-A参数:
lmstat -A它只列出当前有用户的feature,空闲的不显示。比如你有10个virtuoso,8个在用,2个空闲,-A只显示那8条。配合grep可以统计使用率:
lmstat -A | grep "Users of" | wc -l返回正在使用的feature种类数量。
实操案例2:监控license使用率峰值
写一个简单的cron脚本,每小时执行一次:
#!/bin/bash
echo $(date) >> /var/log/license_usage.log
lmstat -A | grep "Users of" >> /var/log/license_usage.log
跑一周,统计哪个时段license最紧张。我去年帮一个公司分析,发现下午2-4点license使用率高达95%,上午10-11点只有60%。他们后来把晚上的批处理作业改到上午跑,冲突减少了70%。
如果你不是直接在license server上操作,而是想从自己的工作站查看远程服务器的license情况:
lmstat -a -c 27000@license_server
把27000换成你license文件里的端口号,license_server换成主机名或IP。
实操案例3:检查license server是否活着
有时候软件报“Cannot connect to license server”,不确定是网络问题还是服务挂了。敲:
lmstat -c 27000@192.168.1.100
如果返回“Cannot connect to license server system”,说明网络不通或者端口被防火墙挡了。如果返回“License server UP”,但feature都是0 in use,说明服务正常但license没配置好。
个人经历:一次移动机房,网络策略改了,27000端口没开。我用lmstat检查发现连不上,telnet 27000也没反应。找网工开了端口,立马恢复。没这个命令,我可能会误以为license文件坏了。
Cadence仿真器(比如spectre、xrun)在license不够时会直接退出,报“FLEXlm error -1”。你手动再跑一次,可能又好了——因为有人释放了。但要是半夜跑批处理,退出了就是白跑。
解决方案:命令行加上-licqueue参数。比如:
spectre input.scs -licqueue它会一直等待license,而不是立即退出。默认等待时间无限。你也可以指定最大等待秒数:
spectre input.scs -licqueue 600等600秒(10分钟),还拿不到license就放弃。
实测效果:一个需要跑48小时的蒙特卡洛仿真,加上-licqueue后,即使凌晨license被回收,它也会在早上别人释放后继续跑,不会中断。完成率从70%提升到98%。

| 命令 | 作用 |
|---|---|
lmstat -a | 显示所有信息(server状态+所有feature) |
lmstat -A | 只显示正在使用的license(活跃状态) |
lmstat -c port@host | 指定远程license server |
lmstat -f [feature] | 显示某个feature的使用详情 |
lmstat -i [feature] | 从license文件中读取feature的increment行信息 |
lmstat -S [daemon] | 显示vendor daemon的所有用户 |
lmstat -s [server] | 显示服务器上所有license文件的状态 |
lmstat -t 30 | 设置连接超时30秒(默认10秒) |
lmstat -v | 显示FlexNet版本号 |
快速记忆:大部分情况下,lmstat -a就够了。远程加-c port@host。只看在用加-A。记住这三条,license问题你就能搞定90%。
最后说句实在话:license管理看似小事,但出问题能卡住整个项目。把这几个命令贴在终端旁边,遇到报错先敲一遍lmstat。2026年的EDA工具越来越庞大,但license诊断工具还是这几把老刀。别嫌命令行丑,关键时候比GUI好使十倍。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。