Oracle® ZFS Storage Appliance 管理指南,发行版 2013.1.5.0

退出打印视图

更新时间: 2016 年 2 月
 
 

使用 Get 函数

run 函数非常强大,它往往专门依靠解析输出来获取有关系统的信息-但是这显然存在缺陷,因为它让脚本解析用户可读的输出,输出在将来可能会发生更改,也可能不会。要更稳妥地收集有关系统的信息,请使用内置的 "get" 函数。对于 boot_time 属性,此函数返回的内容不是字符串,而是 ECMAScript Date 对象,以允许通过编程方式处理属性值。

  1. 例如,您可能希望结合使用 boot_time 属性和当前时间确定自引导以来经过的时间:
    script
           run('configuration version');
           now = new Date();
           uptime = (now.valueOf() - get('boot_time').valueOf()) / 1000; 
           printf('up %d day%s, %d hour%s, %d minute%s, %d second%s\n',
               d = uptime / 86400, d < 1 || d >= 2 ? 's' : '',
               h = (uptime / 3600) % 24, h < 1 || h >= 2 ? 's': '',
               m = (uptime / 60) % 60, m < 1 || m >= 2 ? 's': '',
               s = uptime % 60, s < 1 || s >= 2 ? 's': '');
  2. 假设上面的内容保存为 "uptime.aksh",则可以通过以下方式运行:
    % ssh root@dory < uptime.aksh
    Pseudo-terminal will not be allocated because stdin is not a terminal.
    Password: 
    up 2 days, 10 hours, 47 minutes, 48 seconds

    由于是 ssh 客户机,因此会出现有关伪终端分配的消息;该消息所指的问题可以通过为 ssh 指定 "-T" 选项进行处理。