配置脚本启动选项
总结 在执行脚本之前,将设备配置为执行特定的系统资源检查。
您可以在受支持的平台上为某些类型的脚本配置启动选项。配置启动选项时,设备在执行脚本之前会执行特定的系统资源检查。这些检查会根据配置的值确定系统应启动还是阻止脚本执行。通过配置脚本启动选项,您可以确保设备仅在系统资源受限时执行基本脚本,从而使设备能够继续执行所有关键网络功能。
您可以根据系统的内存使用情况配置启动选项来阻止脚本执行,如 配置脚本的系统内存使用阈值中所述。
您可以配置脚本启动选项以防止脚本在特定条件下执行。要使设备能够启动脚本但减慢脚本的执行速度,或者在脚本运行时超过某些限制时停止脚本,请参阅以下文档:
配置脚本的系统内存使用阈值
您可以配置设备,以在系统的内存使用情况高于配置的阈值时阻止脚本执行。例如,如果系统内存使用量超过 75%,您可能希望阻止执行特别资源密集型的脚本或类型脚本。或者,如果特定脚本在设备操作中发挥着至关重要的作用,则可以为该特定脚本配置更高的系统内存使用阈值或无阈值,以确保即使系统当时的资源更加有限,设备仍会执行该脚本。
start start-options mem-factor
配置语句以定义系统内存使用阈值,高于该阈值时,脚本无法执行。您可以为操作、事件、SNMP 和瞻博网络扩展工具包 (JET) 脚本定义阈值。您可以将语句应用于单个脚本,或应用于给定类型的所有脚本。为某种脚本类型(例如,op 脚本)配置语句时,该语句将应用于该类型的所有 Python、SLAX 和 XSLT 脚本。如果为脚本类型定义了不同的阈值,并且为相同类型的单个脚本定义,则各个脚本的配置将优先。
Junos 设备不会为使用 op url
命令执行的远程操作操作脚本实施脚本启动选项。仅针对本地操作脚本实施脚本的脚本启动选项。
对于 JET 应用程序, daemonize
和 mem-factor
语句相互排斥。如果 JET 应用程序在其 daemonize
配置中包含语句,则不能为该单个脚本配置 mem-factor
语句,也不能为所有 JET 脚本配置全局语句。如果配置这两个语句并提交配置,设备将发出提交错误。
执行为该脚本或该脚本 mem-factor
类型配置了语句的脚本时,设备会将当前系统内存使用情况与配置 mem-factor
的值进行比较。如果系统内存使用情况低于配置的阈值,则脚本将正常执行。如果系统内存使用情况超过配置的阈值,则设备不会执行脚本,并会生成一条系统日志消息。如果未为单个脚本或脚本类型配置 mem-factor statement
,则系统不会执行任何系统内存使用情况检查,并正常执行脚本。
Junos 设备根据操作系统以不同的方式计算系统内存使用情况。Junos OS 使用以下计算来确定系统内存使用情况:
current memory usage = (Total memory – (Cache memory + Free memory + Inactive Memory))*100 / Total memory
例如,考虑在运行 Junos OS 的设备上执行以下命令 show system memory
输出:
user@host> show system memory System memory usage distribution: Total memory: 4135380 Kbytes (100%) Reserved memory: 137172 Kbytes ( 3%) Wired memory: 334964 Kbytes ( 8%) Active memory: 772468 Kbytes ( 18%) Inactive memory: 2738480 Kbytes ( 66%) Cache memory: 0 Kbytes ( 0%) Free memory: 261964 Kbytes ( 6%) ...
在这种情况下,当前的系统内存使用量约为 27%。如果调用脚本,则如果此用法超过该脚本的配置mem-factor
值,设备将不执行脚本。仅当您未为单个脚本配置mem-factor
语句时,设备才会将用法与mem-factor
脚本类型的值进行比较。
Junos OS Evolved 将系统内存使用情况直接包括在命令的 XML 输出中 show system memory
。
user@host-re0 show system memory node re0 | display xml <rpc-reply xmlns:junos="http://xml.juniper.net/junos/23.1R1/junos"> <system-memory-information> <system-memory-summary-information> <system-memory-total>16062004</system-memory-total> <system-memory-total-percent>100%</system-memory-total-percent> <system-memory-used>3540932</system-memory-used> <system-memory-used-percent>22%</system-memory-used-percent> ...
调用配置了语句 mem-factor
的脚本时,设备将记录CSCRIPT_START_OPTIONS_MEM_FACTOR系统日志消息以及严重级别信息。
Oct 11 11:39:07 host cscript[93413]: CSCRIPT_START_OPTIONS_MEM_FACTOR: Start-options is set with mem-factor '70'
如果设备因当前的系统内存使用情况超过配置的阈值而阻止脚本执行,则 cscript 进程会记录日志文件中的系统日志消息。CLI 不会发出任何脚本停止的警告或错误。设备会记录CSCRIPT_START_OPTIONS_SYSTEM_MEM,并为此事件CSCRIPT_START_OPTIONS_WARNING系统日志消息以及严重级别警告。
user@host> show log messages | match cscript Oct 11 11:39:07 host cscript[93413]: CSCRIPT_START_OPTIONS_SYSTEM_MEM: Start-options System Memory Usage Statistics: Total memory:'4137428' Free memory:'132936' Oct 11 11:39:07 host cscript[93413]: CSCRIPT_START_OPTIONS_WARNING: Start-options System Memory Usage '74' exceeds the mem-factor '70', aborting the script 'bgp-neighbors.slax' execution
CLI 不会指示设备是否停止了脚本的执行。例如,在这种情况下,操作脚本不会发出任何输出,SNMP 脚本会返回错误 No such instance
,而 JET 脚本仍然会发出扩展服务应用程序已启动的消息。您必须始终引用系统日志消息以确认设备阻止脚本运行。
为单个脚本配置启动选项
要为单个脚本配置脚本启动选项,
为给定类型的所有脚本配置开始选项
要为给定类型的所有脚本配置脚本启动选项,