【问题标题】:$HASP373 and IEF403I z/os syslog$HASP373 和 IEF403I z/os 系统日志
【发布时间】:2014-04-13 12:41:50
【问题描述】:

我问自己一个关于 z/os 日志的问题:

我只是想知道所有开始的操作是否总是由 $HASP373 和 IEF403I 调用? 对于 $HASP395 和 IEF404I 调用的状态 Ended ?

【问题讨论】:

    标签: mainframe zos


    【解决方案1】:

    z/OS 的问题在于,如果不引入另一个同样需要解释的概念,真的很难解释某件事。反过来,这需要另一种解释等。这部分是由于与 Unix、Windows、OS X 等相比,z/OS 操作系统来自不同的星球,所有这些都大体相似。

    系统为大型机上发生的许多工作发出这些消息,但不是全部。

    z/OS 上的所有工作都在其自己的地址空间中运行,这几乎就像一个迷你虚拟机。 z/OS 系统中将有许多地址空间(我们目前有 380 个)。地址空间中的程序不知道任何其他地址空间,并认为它可以访问整个 2Gb(31 位寻址)内存范围(不同的地址空间可以在必要和授权时进行通信,并且超过 2GB 可用于 64 位寻址)。一个地址空间中的程序不能通过覆盖存储而使另一个地址空间中的程序崩溃。位于 2 个不同地址空间的程序可以访问相同的内存地址,但不会相互影响,因为它们实际上会在不知情的情况下访问不同的内存。

    地址空间有4种:

    • TSO(分时选项)- 这些是登录到系统、输入命令并获得响应的用户。他们可以运行脚本,使用语言 REXX 和 Clist(命令列表 - 较旧,通常被 REXX 取代),就像 Perl 和 shell 脚本一样,提交批处理作业,编写和编译代码等。
    • BATCH JOBS(或 JOB)- 这是您要运行程序的位置,因此您创建一个文本文件,其中包含要运行的程序的名称以及它/他们需要的文件) 并提交。系统将运行程序并告诉您它们何时完成,在运行时,您可以去做其他事情。您甚至不需要登录 - 您可以准备一个 FTP 作业(例如)在您睡着时在 01:00 运行,如果第一个作业有效,则可以运行另一个作业。
    • 已启动任务 (STC) - 与批处理作业非常相似。通常由系统本身在启动时启动,或者由操作员在系统控制台上为该 STC 发出 START 命令启动。 (例如,“START DB2”启动 DB2 启动任务。或者,用户可以为自己的测试 DB2 系统提交批处理作业。)

    • 系统地址空间 (SYSAS)。将这些视为 Unix 守护进程。由操作系统本身为各种基本进程启动。还有一些地址空间表示在 z/OS 的“Unix”一半(USS - Uxniz 系统服务)下运行的进程,但这是另一回事。

    在 z/OS 术语中没有“操作”这样的东西。在一个地址空间内,可能会运行许多程序,每个程序都由 TCB(任务控制块)或 SRB(系统请求块)标识。

    但是,如果您知道所需的信息是由正常的批处理作业生成的,那么寻找该作业的 £HASP373 和 £HASP395 消息将是正确的起点。请记住,消息 ID(HASP373 和 HASP395)在您的系统上可能不以“£”开头。 '£' 是默认值,但它是可自定义的参数。 $ 和 # 也很常见。

    我确实知道我在说什么,但是如果以上任何一点不清楚,那么我还没有很好地解释它。我可能会因为完全按照我所警告的去做并使用另一个未知概念来解释一个未知概念而感到内疚。 :-)

    【讨论】:

    • Steve,当您说“整个 4Gb 内存范围”时,实际上不应该是 2Gb 吗?如果代码是AMODE 24,则可以访问16M;如果 AMODE 31,则为 2G;如果 AMODE 64,则为 16 EB。
    • 西蒙 - 你是对的。我将编辑答案以更正。谢谢。
    【解决方案2】:

    工作通过称为子系统接口的东西进入 z/OS。此流程的一部分是,通常,当启动地址空间时,它会通过定义明确的接口 (IEFSSREQ) 向启动地址空间的子系统请求工作。这个握手是你的 HASP 消息之类的东西的来源。

    这是一个淡化的例子。

    操作员从系统控制台输入 START 命令。作为处理该命令的一部分,系统创建一个地址空间,最终新地址空间中的一个线程说,“好的 - 我准备好了......给我一些工作要做”。这将转到主要的作业输入子系统,该子系统将地址空间交给要做的事情 - 表示操作员在这种情况下开始的任务的内部数据结构。作为该链的一部分,会发出各种 $HASP 消息,这对于 TSO 会话、已启动任务 (STC) 和为批处理作业提交的 JCL 的工作方式几乎相同。

    JES2/JES3 是子系统的示例,但还有其他示例。

    例如,如果我们的操作员在启动命令中添加了 SUB=MSTR 参数,则请求将不会通过主 JES - 因此不会有您要查找的任何 $HASP 消息。有很多供应商应用程序在 JES 之外启动和管理地址空间,而这正是您将自己限制在 HASP 和 IEF401 消息中而错过的东西。

    此外,UNIX 服务具有多种类似于 UNIX“fork”的 API,可用于生成地址空间,而不必涉及 JES。

    如果您想了解活动的开始和结束,有更好的方法 - SMF、ENF 信号等。如果您还不知道,学习这些东西的好方法是使用系统跟踪工具并阅读一些转储。 z/OS 的美妙之处在于它就在那里,对于那些花时间弄清楚在哪里寻找的人来说。

    【讨论】:

    • 感谢您的帮助。这真的很有帮助。我实际上正在从事与 IBM 大型机相关的项目。您介意通过电子邮件 musecz@wanadoo.fr 与我联系吗?提前非常感谢
    【解决方案3】:

    没有。 Thosemessages 用于jobs。并非所有操作都是作业。不是作业的操作示例是system command。我现在手头没有 z/OS 系统,但我相信另一个不使用您引用的消息的操作示例是启动任务。

    This 可能会有所帮助,因为它试图用 Unix 术语解释 z/OS 概念。

    【讨论】:

    • 感谢您的回复。在你看来,工作和手术有什么区别?
    • 大型机上的“作业”是一个定义明确的术语,涉及以批处理模式运行一个程序(或多个程序),您可以在其中告诉系统您要运行什么以及哪些数据集(文件)您希望程序使用。您提交作业,系统会在可能的情况下运行它,并在完成时告诉您。操作在大型机术语中没有特定定义,尽管一些软件产品使用该术语(TWS - 调度包 - 仅举一个例子)。
    【解决方案4】:

    工作是通过 JES2/JES3 完成的。 (在您的情况下,JES2。)JES2/JES3 作业通常用于批处理类型的工作。例如,一个排序工作,我提交一些东西,然后再回来得到答案。但是,在 z/OS 下运行的许多工作不通过 JES2/JES3。

    这里的部分问题是您所说的操作;例如,虽然您可能会收到一条消息说 DB2 已启动,但在它启动后,它不会在每次收到查询时都告诉您。 TSO 用户可能会在他/她的地址空间下运行 REXX exec,但这不会通过 JES。

    另一种看法是,JES2/JES3 是作业管理子系统,但它们并不等同于 unix/windows 系统上的内核,后者会调度系统上运行的所有工作。对于 z/OS,系统有多种工作方式;示例包括 JES2/JES3、TSO、ISPF、CICS、DB2、IMS,通过控制台等。然后由主调度程序/WLM/SRM 来管理通过所有子系统进入的所有请求。

    如果您有权访问 z/OS 系统,请查看 SDSF 或您用来管理 JES2 的任何东西。 SDSF 下的 ST 面板是由 JES2 管理的正在运行/有资格运行的事物的列表。但是,如果您查看 DA 面板(假设您有权这样做),您会注意到有很多地址空间出现在 DA 面板中,而 ST 面板中没有出现。

    【讨论】:

      【解决方案5】:

      如果地址空间是通过 JES2 子系统启动的,这通常是这种情况,除非使用 MVS START 命令指定另一个子系统或 MSTR,然后发出 $HASP373 作业名 STARTED。同样,当地址空间结束时,会发出消息 $HASP395。

      IEF403I 和 IEF404I 消息由系统在类似情况下发出,与 JES2 或 JES3 正在做什么无关,也与地址空间在哪个子系统下启动无关。仅当操作员使用SETCON MONITORMONITOR JOBNAMES 命令请求监视作业名称时,才会发出这些消息。用于自动化操作的产品通常会这样做。

      【讨论】:

        猜你喜欢
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-01
        • 1970-01-01
        • 2014-04-30
        • 2013-01-03
        相关资源
        最近更新 更多