监控 MathLM
什么是 MonitorLM?
MonitorLM 还介绍可用的许可证和已被签出(checked out)的许可证,完全合格的域名以及已经签出的用户名等等. MonitorLM 可以把输出发送到终端,打开一个网页浏览器,或者写入一个文件. MonitorLM 的输出通过一个配置文件自定义. MonitorLM 自动支持 IPv4 和 IPv6 环境.
启动 MonitorLM
若要启动 MonitorLM,把目录更改到 MathLM 安装的地址,并且输入 .\monitorlm servername(在 Windows 上)或者 ./monitorlm servername(在 Linux 或者 Mac OS X 上). monitorlm 命令的第一个变量指定运行 MathLM 的许可证服务器名称.如果用户没有明确指定一个服务器名称,则选择本地机器名作为默认值.
MonitorLM 命令行选项
以下选项使用 monitorlm 命令可用.指定一个选项的语法为 monitorlm
.
| -file file | 指定输出应该指向的文件 |
| -format f | 指定 MonitorLM 输出的格式 |
| -localtime | 指定所有参考时间为本地时间,而不是 GMT 时间 |
| -template file | 指定 MonitorLM 输出的模板文件 |
如果 -file 没有设置,MonitorLM 将写入 stdout.
| text | 以文本格式把输出发送至 stdout(在 Linux 上是默认的) |
| html | 以 HTML 格式发送输出,并且启动一个网页浏览器(在 Windows 和 Mac OS X 上是默认的) |
| cgi | 以 HTML 格式发送输出至 stdout |
当直接使用网页浏览器启动 MonitorLM 时,使用 cgi 格式.
这里显示 MonitorLM 的输出看起来是什么样子的,当 -format 设为 text.
Online help is available at
http://reference.wolfram.com/network
MathLM Version 8.0
MathLM Server hostname.domain.com
Date : Thursday, October 17 2010 21:11:59
License Usage Summary:
License Total Total
Program Class in Use Authorized
------------------------------------------------------
Mathematica A 2 20
MathKernel A 4 40
Sub Mathematica A 0 80
Sub MathKernel A 0 80
Licenses in Use:
License
Program Version Class Username Hostname Duration
----------------------------------------------------------------------------
Mathematica 7.0 A username client1.domain.com 08:49
Mathematica 8.0 A username client2.domain.com 06:33
MathKernel 7.0 A username client1.domain.com 08:44
MathKernel 8.0 A username client2.domain.com 06:52
MathKernel 8.0 A username client2.domain.com 06:52
MathKernel 8.0 A username client2.domain.com 06:30
这里显示在一个网页浏览器中 MonitorLM 的输出看起来是什么样子的,当 -format 设为 html.
注意当 -format 设为 cgi,MonitorLM 的输出以 HTML 格式发送至 stdout. 这里显示当在网页浏览器中显示时,输出看起来是什么样子的.
自定义 MonitorLM 的输出
用户可以通过编辑一个模板文件,自定义从 MonitorLM 得到的输出的内容和格式. 这是一个普通文本文件,它可以包含以下元素类别.
- 常量标签 — 这些标签表示在 MonitorLM 的执行过程中,它是静态的并且与许可证无关,比如当前日期. 这些标签名称的每一个都具有前缀 CONST.
- 变量标签 — 这些标签作为常量标签的包装(wrappers). 它们对于定义作为级数中的输出的数据是有用的,比如一个当前 MathLM 用户的表格. 它们对于提高模板文件的可读性是有用的. 这些标签名的每一个都具有前缀 VAR.
除了 %var# 命令,模板文件也可以包括普通文本,比如括号、破折号、引号和任意注释. 该文本可以用来在服务器消息中包含注意和分隔符,用以进行格式化. 包括在该字符串中的所有文本出现在服务器消息中,除了以下两个例外情况:使用 %q 包含双引号("),以及使用 %% 包含百分号(%).
预定义常量标签
以下是可用包括在模板文件中的常量标签名的两个表格,以及它们可能格式的数值值.
日期常量标签
以下是 MonitorLM 的日期常量标签.
标签名 | 可能值 | 描述 | |
| %CONST_DATE_D# | [1...31] | 一个月中的第几天 | |
| %CONST_DATE_W# | 1 -数字 [ 1 ... 7 ] 2 - 简略标记 [ Sun ... Sat ] 3 - Verbose [ Sunday ... Saturday ] | 一个星期中的第几天 | |
| %CONST_DATE_M# | 1 - 数字 [ 1 ... 12 ] 2 -简略标记 [ Jan ... Dec ] 3 - Verbose [ January ... December ] | 月份 | |
| %CONST_DATE_Y# | 1 -两位数字 [ 10 ] 2 -四位数字 [ 2010 ] | 年份 | |
| %CONST_DATE_T# | 1 -十二小时 [ 10:20:15 ] | 时间 |
MonitorLM 日期常量标签
服务器和进程常量标签
以下是 MonitorLM 的服务器和进程常量标签.
标签名 | 描述 |
| %CONST_SERVER_IP | MathLM IP 地址 |
| %CONST_SERVER_HOST | MathLM 主机名 |
| %CONST_SERVER_DOMAIN | MathLM 域 |
| %CONST_SERVER_FQDN | MathLM 完全合格的域名 |
| %CONST_SERVER_VERSION | MathLM 版本 |
| %CONST_CA_FE_AUTHORIZED | 被授权的类别 A 前端数量 |
| %CONST_CA_SUB_FE_AUTHORIZED | 被授权的类别 A 子前端进程数量 |
| %CONST_CB_FE_AUTHORIZED | 被授权的类别 B 前端数量 |
| %CONST_CB_SUB_FE_AUTHORIZED | 被授权的类别 B 子前端进程数量 |
| %CONST_TOTAL_FE_AUTHORIZED | 被授权的前端总数 |
| %CONST_TOTAL_SUB_FE_AUTHORIZED | 被授权的子前端进程总数 |
| %CONST_CA_KE_AUTHORIZED | 被授权的类别 A 内核总数 |
| %CONST_CA_SUB_KE_AUTHORIZED | 被授权的类别 A 子内核进程数量 |
| %CONST_CB_KE_AUTHORIZED | 被授权的类别 B 内核数量 |
| %CONST_CB_SUB_KE_AUTHORIZED | 被授权的类别 B 子内核进程数量 |
| %CONST_TOTAL_KE_AUTHORIZED | 被授权的内核总数 |
| %CONST_TOTAL_SUB_KE_AUTHORIZED | 被授权的子内核进程总数 |
| %CONST_CA_FE_AVAILABLE | 可用的类别 A 前端数目 |
| %CONST_CA_SUB_FE_AVAILABLE | 可用的类别 A 子前端进程数目 |
| %CONST_CB_FE_AVAILABLE | 可用的类别 B 前端数目 |
| %CONST_CB_SUB_FE_AVAILABLE | 可用的类别 B 子前端进程数目 |
| %CONST_TOTAL_FE_AVAILABLE | 可用的前端总数 |
| %CONST_TOTAL_SUB_FE_AVAILABLE | 可用的子前端进程总数 |
| %CONST_CA_KE_AVAILABLE | 可用的类别 A 内核总数 |
| %CONST_CA_SUB_KE_AVAILABLE | 可用的类别 A 子内核进程数目 |
| %CONST_CB_KE_AVAILABLE | 可用的类别 B 内核总数 |
| %CONST_CB_SUB_KE_AVAILABLE | 可用的类别 B 子内核进程数目 |
| %CONST_TOTAL_KE_AVAILABLE | 可用的内核总数 |
| %CONST_TOTAL_SUB_KE_AVAILABLE | 可用的子内核进程总数 |
| %CONST_CA_FE_OUT | 正在使用的类别 A 前端数目 |
| %CONST_CA_SUB_FE_OUT | 正在使用的类别 A 子前端进程数目 |
| %CONST_CB_FE_OUT | 正在使用的类别 B 前端数目 |
| %CONST_CB_SUB_FE_OUT | 正在使用的类别 B 子前端进程数目 |
| %CONST_TOTAL_FE_OUT | 正在使用的前端总数 |
| %CONST_TOTAL_SUB_FE_OUT | 正在使用的子前端进程总数 |
| %CONST_CA_KE_OUT | 正在使用的类别 A 内核数目 |
| %CONST_CA_SUB_KE_OUT | 正在使用的类别 A 子内核进程数目 |
| %CONST_CB_KE_OUT | 正在使用的类别 B 内核数目 |
| %CONST_CB_SUB_KE_OUT | 正在使用的类别 B 子内核数目 |
| %CONST_TOTAL_KE_OUT | 正在使用的内核总数 |
| %CONST_TOTAL_SUB_KE_OUT | 正在使用的子内核进程总数 |
MonitorLM 服务器和进程常量标签
可定制的变量标签
以下是 MonitorLM 的可定制的变量标签.
标签名 | 可能值 | 描述 | |
| %VAR_DATE_AMPM | "A.M." "P.M." | 当显示时间时,用于 a.m. 和 p.m. 的文本 | |
| %VAR_MPROCESS | "Mathematica" "MathKernel" "SubMathematica" "SubMathKernel" | Mathematica 进程的标题;引号中的第一个字符串是前端标题,第二个是内核标题,第三个是子前端进程标题,而第四个是子内核进程标题 | |
| %VAR_LIC_CLASS | "Class A" "Class B" | 关于每个许可证类别的标签 | |
| %VAR_CA_AUTHORIZED_HEADER | "Class A Authorized \t Front End \t Kernel" | 被授权类别 A 许可证的数目的头;使用预定义常量标签 %CONST_CA_FE_AUTHORIZED 和 %CONST_CA_KE_AUTHORIZED | |
| %VAR_CA_SUB_AUTHORIZED_HEADER | "Class A Authorized \t Front End \t Kernel" | 被授权类别 A 子进程许可证的数目的头;使用预定义常量标签 %CONST_CA SUB_FE_AUTHORIZED 和 %CONST_CA SUB_KE_AUTHORIZED | |
| %VAR_CB_AUTHORIZED_HEADER | "Class B Authorized \t Front End \t Kernel" | 被授权类别 B 许可证的数目的头;使用预定义常量标签 %CONST_CB_FE_AUTHORIZED 和 %CONST_CB_KE_AUTHORIZED | |
| %VAR_CB_SUB_AUTHORIZED_HEADER | "Class B Authorized \t Front End \t Kernel" | 被授权类别 B 子进程许可证的数量的头;使用预定义常量标签 %CONST_CB_SUB FE_AUTHORIZED 和 %CONST_CB_SUB KE_AUTHORIZED | |
| %VAR_TOTAL_AUTHORIZED_HEADER | "Total Authorized \t Front End \t Kernel" | 被授权许可证总数的头;使用预定义常量标签 %CONST_TOTAL_FE_AUTHORIZED 和 %CONST_TOTAL_KE_AUTHORIZED | |
| %VAR_TOTAL_SUB_AUTHORIZED_HEADER | "Total Authorized \t Front End \t Kernel" | 被授权子进程许可证的总数的头;使用预定义常量标签 %CONST_TOTAL_SUB FE_AUTHORIZED 和 %CONST_TOTAL_SUB KE_AUTHORIZED | |
| %VAR_CA_CHECKEDOUT_HEADER | "Class A Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration" | 关于正在使用的类别 A 许可证信息的头;使用重复标签 %REP_CA_CHECKOUT_LINE | |
| %VAR_CA_SUB_CHECKEDOUT_HEADER | "Class A Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration" | 关于正在使用的类别 A 子进程许可证的信息的头;使用重复标签 %REP_CA_CHECKOUT_LINE | |
| %VAR_CB_CHECKEDOUT_HEADER | "Class B Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration" | 关于正在使用的类别 B 许可证的信息的头;使用重复标签 %REP_CB_CHECKOUT_LINE | |
| %VAR_CB_SUB_CHECKEDOUT_HEADER | "Class B Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration" | 关于正在使用的类别 B 子进程许可证的信息的头;使用重复标签 %REP_CB_SUB_CHECKOUT_LINE | |
| %VAR_CHECKEDOUT_HEADER | "Licenses in Use\nUsername \t Hostname \t Program \t License Class \t Slot # \t Duration" | 关于所有正在使用的许可证的信息的头;使用重复标签 %REP_GENERAL_CHECKOUT_LINE | |
| %VAR_SUB_CHECKEDOUT_HEADER | "Licenses in Use\nUsername \t Hostname \t Program \t License Class \t Slot # \t Duration" | 关于所有正在使用的子进程许可证的信息的头;使用重复标签 %REP_GENERAL_SUB CHECKOUT_LINE |
MonitorLM 可定制的变量标签.
注意:在本节中提供的字符串是可能值的例子,而不是默认设置的例子. 若要使用这些标签,用户必须在模板中定义它们.
取决于进程的标签
以下是 MonitorLM 的取决于进程的标签.
标签名 | 描述 |
| %PROC_UID | Mathematica 进程所有者的用户ID |
| %PROC_USER | Mathematica 进程所有者的用户名 |
| %PROC_IP | 使用 Mathematica 进程的机器的 IP 地址 |
| %PROC_HOST | 使用 Mathematica 进程的机器的主机名 |
| %PROC_DOMAIN | 使用 Mathematica 进程的机器的域 |
| %PROC_FQDN | 使用 Mathematica 进程的机器的完全合格的域名 |
| %PROC_SLOTNUM | Mathematica 进程的时间段编号(Slot number) |
| %PROC_VERSION | 客户端版本 |
| %PROC_DURATION | 时间客户端已经在运行 |
MonitorLM 取决于进程的标签.
重复标签
以下是 MonitorLM 的重复标签.
标签名 | 可能值 | 描述 | |
| %REP_CA_CHECKOUT_LINE | "%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n" | 类别 A 签出行(checkout line). 这里指定了列出正在使用的类别 A 进程的表格或者块的中每一行的格式. 对应于可定制变量标签%VAR_CA_CHECKEDOUT_HEADER. | |
| %REP_CA_SUB_CHECKOUT_LINE | "%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n" | 类别 A 子进程签出行. 这里指定了列出正在使用的类别 A 子进程的表格或者块中每一行的格式. 对应于可定制变量标签%VAR_CA_SUB_CHECKEDOUT_HEADER. | |
| %REP_CB_CHECKOUT_LINE | "%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n" | 类别 B 签出行. 这里指定了列出正在使用的类别 B 进程的表格或者块中每一行的格式. 对应于可定制变量标签 %VAR_CB_CHECKEDOUT_HEADER. | |
| %REP_CB_SUB_CHECKOUT_LINE | "%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n" | 类别 B 子进程签出行. 这里指定列出正在使用的类别B 子进程的表格或者块中每一行的格式. 对应于可定制变量标签 %VAR_CB_SUB_CHECKEDOUT_HEADER. | |
| %REP_GENERAL_CHECKOUT_LINE | "%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %VAR_LIC_CLASS \t %PROC_SLOTNUM \t %PROC_DURATION\n" | 通用签出行. 如果用户不想要分隔类别时,使用它. 对应于可定制变量标签%VAR_CHECKEDOUT_HEADER. | |
| %REP_GENERAL_SUB_CHECKOUT_LINE | "%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %VAR_LIC_CLASS \t %PROC_SLOTNUM \t %PROC_DURATION\n" | 通用子进程签出行. 如果用户不想要分隔类别是,使用它. 对应于可定制变量标签%VAR_SUB_CHECKEDOUT_HEADER. |
MonitorLM 重复标签
注意:本节中提供的字符串是可能值的实例,而不是默认设置. 若要使用这些标签,用户必须在模板中定义它们.
注意:在模板文件中,构成 MonitorLM 输出的文本包装(wrappers)和标签必须在仅包含关键词 %TEXT 的文本之后,而在该关键词之前和之后没有空格. 自定义变量标签必须在 %TEXT 行之前. 如果没有自定义变量标签,%TEXT 行可以是文件的第一行.
示例和行为
这是一个简单的文本文件,仅显示出被授权的,可用的以及正在使用的进程数量. 该例子不需要定义任何变量定义标签.
%TEXT
Time/Date : [%CONST_DATE_T2] [%CONST_DATE_M3 %CONST_DATE_D, %CONST_DATE_Y2]
Front End Processes Authorized: %CONST_TOTAL_FE_AUTHORIZED
Kernel Processes Authorized: %CONST_TOTAL_KE_AUTHORIZED
Front End Processes Available: %CONST_TOTAL_FE_AVAILABLE
Kernel Processes Available: %CONST_TOTAL_KE_AVAILABLE
Front End Processes In Use: %CONST_TOTAL_FE_OUT
Kernel Processes In Use: %CONST_TOTAL_KE_OUT
Time/Date : [00:05:26] [October 20, 2010]
Front End Processes Authorized: 5
Kernel Processes Authorized: 5
Front End Processes Available: 4
Kernel Processes Available: 4
Front End Processes In Use: 1
Kernel Processes In Use: 1
这是一个稍微复杂的例子. 它与前面的例子相似,除了它也列出正在使用的进程,并且自定义了变量标签.
# Begin variable tag definitions
%VAR_MPROCESS = "FE" "KE" "SFE" "SKE"
%VAR_TOTAL_CHECKEDOUT_HEADER = "Slot\t Program\t User\t Host\n"
%REP_GENERAL_CHECKOUT_LINE = "%PROC_SLOTNUM\t %VAR_MPROCESS\t %PROC_USER\t %PROC_HOST\n"
%TEXT
Time/Date : [%CONST_DATE_T2] [%CONST_DATE_M3 %CONST_DATE_D, %CONST_DATE_Y2]
Front End Processes Authorized: %CONST_TOTAL_FE_AUTHORIZED
Kernel Processes Authorized: %CONST_TOTAL_KE_AUTHORIZED
Front End Processes Available: %CONST_TOTAL_FE_AVAILABLE
Kernel Processes Available: %CONST_TOTAL_KE_AVAILABLE
Front End Processes In Use: %CONST_TOTAL_FE_OUT
Kernel Processes In Use: %CONST_TOTAL_KE_OUT
%VAR_TOTAL_CHECKEDOUT_HEADER
%REP_GENERAL_CHECKOUT_LINE
Time/Date : [00:05:26] [October 20, 2010]
Front End Processes Authorized: 5
Kernel Processes Authorized: 5
Front End Processes Available: 4
Kernel Processes Available: 4
Front End Processes In Use: 1
Kernel Processes In Use: 1
Slot Program User Host
6 FE username hostname
1 KE username hostname
下面例子演示了 HTML 输出. 这是有用的,例如,如果用户想要在网页浏览器中查看 MonitorLM 输出.
%VAR_MPROCESS = "FE" "KE" "SFE" "SKE"
%VAR_TOTAL_CHECKEDOUT_HEADER = "<TR><TD><B>Slot</B></TD> <TD><B>Program</B></TD> <TD><B>User</B></TD> <TD><B>FQDN</B></TD> </TR>\n"
%REP_GENERAL_CHECKOUT_LINE = "<TR> <TD>%PROC_SLOTNUM</TD> <TD>%VAR_MPROCESS</TD> <TD>%PROC_USER</TD> <TD>%PROC_FQDN</TD> </TR>\n"
%TEXT
<HTML>
<HEAD> <TITLE> MathLM Status </TITLE> </HEAD>
<BODY>
<TABLE BORDER=1 CELLPADDING=5>
<TR><TD COLSPAN=2><B>MathLM Server</B></TD> <TD COLSPAN=2><B>%CONST_SERVER_FQDN</B></TD> </TR>
<TR><TD COLSPAN=2>Time/Date</TD> <TD COLSPAN=2>[%CONST_DATE_T2] [%CONST_DATE_M3 %CONST_DATE_D, %CONST_DATE_Y2]</TD> </TR>
<TR><TD COLSPAN=2>Authorized</TD> <TD>%CONST_TOTAL_FE_AUTHORIZED</TD> <TD>%CONST_TOTAL_KE_AUTHORIZED</TD></TR>
<TR><TD COLSPAN=2>Available</TD> <TD>%CONST_TOTAL_FE_AVAILABLE</TD> <TD>%CONST_TOTAL_KE_AVAILABLE</TD></TR>
<TR><TD COLSPAN=2>In Use</TD> <TD>%CONST_TOTAL_FE_OUT</TD> <TD>%CONST_TOTAL_KE_OUT</TD></TR>
%VAR_TOTAL_CHECKEDOUT_HEADER
%REP_GENERAL_CHECKOUT_LINE
</TABLE>
</BODY>
</HTML>
