菜鸟科技网

lmgrd命令是什么?如何正确使用?

lmgrd 是什么?

lmgrdLicense Manager Daemon 的缩写,即“许可证管理守护进程”,它是由FlexNet Publisher(由Macrovision公司开发,现为Open Text公司产品)提供的一个核心服务程序。

lmgrd命令是什么?如何正确使用?-图1
(图片来源网络,侵删)

它的作用是:

  • 运行在服务器上:作为后台服务持续运行。
  • 管理许可证:负责加载、管理和控制软件的许可证文件。
  • 客户端通信:响应客户端应用程序(如MATLAB, ANSYS, AutoCAD等)的许可证请求,决定是否允许程序启动。
  • 监控与日志:记录所有许可证的使用情况、错误信息等。

可以把 lmgrd 想象成一个“数字门卫”,它手里拿着一份许可证清单(.lic文件),当有人(客户端程序)想进入(使用软件)时,门卫会检查清单,确认有可用名额后,才放行。


lmgrd 的核心组成部分

要使用 lmgrd,你需要了解三个关键文件:

  1. lmgrd 可执行文件

    lmgrd命令是什么?如何正确使用?-图2
    (图片来源网络,侵删)
    • 这是程序本身,它通常位于软件安装目录的某个子文件夹中,MATLAB\flexlm\intel\lmgrd.exe (Windows) 或 /opt/matlab/etc/lmgrd (Linux)。
  2. 许可证文件 (.lic 文件)

    • 这是许可证的“法律条文”,包含了所有许可证信息,如:
      • 服务器主机名SERVER hostname 1055 ...
      • 许可证供应商VENDOR matlab ...
      • 许可证特征FEATURE matlab ...
    • 这个文件通常由软件供应商提供,是 lmgrd 运行的核心依据。
  3. 日志文件 (.log 文件)

    • lmgrd 的“工作日记”,它会将所有重要事件(启动、停止、许可证签出、签入、错误等)都记录在这个文件中。
    • 当许可证出现问题时,查看日志文件是第一步

lmgrd 命令详解

lmgrd 的基本语法结构如下:

lmgrd [options] license_file_path [log_file_path]

常用命令行选项

选项 描述 示例
-c <license_file> 指定许可证文件路径,这是必需的参数。 lmgrd -c /path/to/licenses.lic
-l <log_file> 指定日志文件路径,如果未指定,lmgrd 会在当前目录下创建 debug.log lmgrd -c licenses.lic -v 11 -l /var/log/lmgrd.log
-x <license_file> 指定诊断许可证文件路径,用于在不启动守护进程的情况下检查许可证文件语法。 lmgrd -x licenses.lic
-v <level> 设置日志详细级别,级别越高,日志信息越详细。
0: 仅错误信息
1: 错误和警告 (默认)
2: 错误、警告和信息
3: 包含调试信息
lmgrd -c licenses.lic -v 3
-p <pid_file> 指定PID文件路径lmgrd 会将自己的进程ID写入此文件,方便管理和停止服务。 lmgrd -c licenses.lic -p /var/run/lmgrd.pid

常用操作场景示例

启动许可证管理器

这是最常见的用法,假设你的许可证文件在 /etc/licenses/ 目录下。

lmgrd命令是什么?如何正确使用?-图3
(图片来源网络,侵删)

Linux / macOS:

# 指定许可证文件和日志文件启动
sudo /opt/flexlm/lmgrd -c /etc/licenses/mysoftware.lic -l /var/log/mysoftware/lmgrd.log
# 同时指定PID文件,方便后续管理
sudo /opt/flexlm/lmgrd -c /etc/licenses/mysoftware.lic -l /var/log/mysoftware/lmgrd.log -p /var/run/mysoftware/lmgrd.pid

Windows (命令行):

REM 切换到lmgrd.exe所在目录
cd C:\Program Files\ANSYS Inc\Shared Files\Licensing\winx64
REM 启动lmgrd,指定许可证文件和日志文件
lmgrd.exe -c "C:\ProgramData\ANSYS Inc\Shared Files\Licensing\license_files\ansys.lic" -l "C:\ProgramData\ANSYS Inc\Shared Files\Licensing\logs\lmgrd.log"

注意:在Linux/macOS上,lmgrd 通常需要 root 权限才能绑定到1024以下的端口(如1055),在Windows上,通常以管理员身份运行。

检查许可证文件语法(不启动服务)

如果你只是想知道许可证文件有没有格式错误,而不想真的启动服务,可以使用 -x 选项。

lmgrd -x /path/to/licenses.lic

如果命令没有输出任何错误信息,说明文件语法基本正确。

停止许可证管理器

不能直接用 kill 命令杀死 lmgrd,因为它可能会在杀死前没有正确释放许可证,导致客户端程序异常,正确的停止方式是使用 lmgrd 自带的 -x 选项,或者使用 lmutil 工具。

方法1:使用 lmgrd -x (推荐)

lmgrd -c /path/to/licenses.lic -x

这个命令会向 lmgrd 发送一个优雅的停止信号,让它保存状态并正确关闭。

方法2:使用 lmutil 工具

lmutil 是一个配套的命令行工具,功能更强大。

# lmutil stop 命令
lmutil lmdown -c /path/to/licenses.lic
# 或者直接杀死进程(不推荐,除非紧急情况)
# lmutil lmremove -c /path/to/licenses.lic -p <lmgrd的PID>

查看许可证使用状态

通常使用 lmutil 中的 lmstat 命令来查看状态。

# 查看所有许可证的使用情况
lmutil lmstat -c /path/to/licenses.lic
# 查看特定特征(FEATURE)的许可证状态
lmutil lmstat -c /path/to/licenses.lic -f myfeature
# 查看当前连接到服务器的用户
lmutil lmstat -c /path/to/licenses.lic -u

故障排查

当软件提示“无法连接到许可证服务器”时,lmgrd 通常是第一个排查点。

  1. 检查 lmgrd 是否在运行

    • Linux: ps aux | grep lmgrd
    • Windows: 打开“任务管理器”,查看进程列表。
  2. 检查日志文件

    • 这是最重要的一步,打开你指定的日志文件(如 lmgrd.log)。
    • 常见错误
      • Cannot connect to server on host ...: 检查服务器主机名或IP地址是否在 .lic 文件中写对了。
      • TCP port 1055 is in use: 检查是否有其他程序占用了许可证端口,可以用 netstat -an | grep 1055 (Linux) 或 netstat -ano | findstr 1055 (Windows) 查看。
      • Vendor daemon ... not running: lmgrd 找不到或无法启动对应的 vendor daemon(如 matlab.exe, ansyslmd.exe),检查 .lic 文件中的 VENDOR 行是否正确,以及该 vendor daemon 文件是否存在。
      • Invalid hostid: 服务器的MAC地址或主机ID与许可证文件不匹配。
  3. 检查防火墙

    • 确保服务器的防火墙允许客户端计算机访问 lmgrd 使用的端口(通常是1055,以及 vendor daemon 使用的端口)。
  4. 检查端口冲突

    • 确保没有其他服务占用了 lmgrd 或其 vendor daemon 的端口。

命令 功能 何时使用
lmgrd -c ... 启动许可证管理器 正常启动许可证服务时
lmgrd -x ... 停止许可证管理器 需要优雅地关闭许可证服务时
lmgrd -x <.lic> 诊断许可证文件 检查 .lic 文件语法是否正确时
lmutil lmdown -c ... 停止许可证管理器 lmgrd -x 失败时的备选方案
lmutil lmstat -c ... 查询许可证状态 查看许可证使用情况、用户列表时

掌握 lmgrd 命令及其相关工具,是管理和维护商业软件许可证的关键技能,遇到问题时,日志文件永远是你的第一线索

分享:
扫描分享到社交APP
上一篇
下一篇