HASP373和IEF403I z/os syslog

5
我有一个关于z/os日志的问题:
我想知道是否所有启动的操作都由$HASP373和IEF403I调用? 而结束状态是否由$HASP395和IEF404I调用?
5个回答

7
z/OS的问题在于,在不引入需要解释的其他概念的情况下,很难说明某个东西。这部分原因是z/OS操作系统与Unix、Windows、OS X等都来自不同星球,而后者又有很大的相似之处。
这些消息是由系统发出的,涉及到在主机上执行的许多工作,但并非全部。
z/OS中的所有工作都在其自己的地址空间中运行,类似于一个微型虚拟机。在z/OS系统中会有很多地址空间(我们目前有380个)。地址空间中的程序不知道其他的地址空间,并认为它们可以访问2GB(31位寻址)内存范围的所有内容(如果必要且经授权,不同的地址空间可以进行通信,并且使用64位寻址可提供超过2GB的空间)。一个地址空间中的程序无法通过覆盖存储空间来使另一个地址空间中的程序崩溃。在两个不同的地址空间中的程序可以访问相同的内存地址,但彼此不影响,因为它们实际上将访问不同的内存,而不知道这一点。
有四种类型的地址空间:
- TSO(Time Sharing Option)——这些是登录到系统的用户,键入命令并获得响应。他们可以运行脚本,使用REXX和Clist(命令列表——较旧,通常被REXX所取代)等语言,就像Perl和shell脚本一样,提交批处理作业,编写和编译代码等。 - BATCH JOBS(或JOB)——这是您要运行程序的地方,因此您创建一个名为要运行的程序和它/它们需要的文件的文本文件,并将其提交。系统将运行程序并告诉您何时完成。在运行过程中,您可以去做其他事情。您甚至不需要登录,例如,您可以准备一个FTP作业,在您睡觉时运行,另一个作业在第一个作业成功后运行。 - STARTED TASKS(STC)——与批处理作业非常相似。通常由系统自身在启动时启动,或者由操作员在系统控制台上发出START命令来启动。 (例如,“START DB2”启动DB2已经开始的任务。或者用户可以为他们自己的测试DB2系统提交批处理作业。) - 系统地址空间(SYSAS)。将其视为类Unix守护进程。由操作系统本身为各种必要的进程启动。还有代表在z/OS的“Unix”半部分(USS - Unix System Services)下运行的进程的地址空间,但这是另外一个故事了。
在z/OS术语中,并没有“操作”这个概念。在一个地址空间中,可能会运行许多程序,每个程序由TCB(任务控制块)或SRB(系统请求块)标识。
然而,如果您知道所需信息是由普通批处理作业生成的,则查找该作业的HASP373和HASP395消息将是正确的起点。请注意,消息ID(HASP373和HASP395)在您的系统上可能不以“£”开头。“£”是默认值,但它是可自定义的参数。$和#也相当常见。
我确实知道我在说什么,但如果以上任何内容不清楚,则我解释得不够好。我可能会犯下我所警告的错误,即使用另一个未知概念来解释未知概念。 :-)

Steve,当你说“整个4Gb的内存范围”时,实际上应该是2Gb对吧?如果代码是AMODE 24,它可以访问16M;如果是AMODE 31,则是2G;如果是AMODE 64,则是16 exabytes。 - Simon Kissane
Simon - 你说得对。我会编辑答案进行更正。谢谢。 - Steve Ives

3
工作通过子系统接口进入z/OS。在此流程中,通常情况下,当一个地址空间启动时,它会通过一个定义良好的接口(IEFSSREQ)向启动地址空间的子系统请求工作。这个握手是你的HASP消息等信息产生的地方。
以下是一个简单的例子。
操作员从系统控制台输入START命令。在处理该命令的过程中,系统创建了一个地址空间,最终新地址空间中的线程说:“好吧-我准备好了...给我一些工作要做”。这将传递到主作业入口子系统,它将分配给地址空间要执行的任务-在这种情况下,表示操作员启动的任务的内部数据结构。在这个链中,各种$HASP消息被发出,对于TSO会话、启动任务(STC)和提交批处理作业的JCL,这个过程基本上是相同的。
JES2/JES3是子系统的例子,但还有其他的子系统。
例如,如果我们的操作员在启动命令中添加了SUB=MSTR参数,则请求不会通过主JES进行,因此您寻找的任何$HASP消息都不会出现。有很多供应商应用程序可以在JES之外启动和管理地址空间,这就是限制自己只看HASP和IEF401消息所错过的东西。
此外,UNIX Services有各种类似于UNIX“fork”的API,可以用于产生地址空间,而不一定涉及到JES。
如果您想了解活动的开始和结束,有更好的方法-SMF、ENF信号等。如果您还不知道这些东西,了解这些东西的一个好方法是使用系统跟踪设施并阅读一些转储文件。z/OS的美妙之处在于,对于那些花时间找出哪里看的人来说,它就在那里。

谢谢你的帮助。这对我真的很有帮助。我正在从事与IBM大型机有关的项目。你介意通过电子邮件联系我吗?我的邮箱是musecz@wanadoo.fr。非常感谢您提前的帮助。 - musecz

2
一份工作是通过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面板上。

2
这段话的英译中文如下:

不,那些 消息 是针对作业的。并非所有操作都是作业。一个不是作业的操作的例子可能是系统命令。我现在手头没有z/OS系统,但我相信另一个不使用您提到的消息的操作示例将是启动任务。

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


谢谢您的回复。在您看来,工作和操作有什么区别? - musecz
在主机上,“作业”是一个明确定义的术语,与以批处理模式运行程序(或多个程序)有关,您告诉系统要运行什么以及要使用哪些数据集(文件)。您提交作业,系统会在可能时运行它,并告诉您何时完成。在主机术语中,操作没有特定的定义,尽管有几个软件产品使用该术语(例如调度包TWS)。 - Steve Ives

0

如果地址空间是通过JES2子系统启动的,这通常是默认情况,除非使用MVS START命令指定另一个子系统或MSTR,那么将发出$HASP373 jobname STARTED消息。同样,当地址空间结束时,将发出$HASP395消息。

IEF403I和IEF404I消息在类似情况下由系统发出,与JES2或JES3正在执行的操作无关,而且不管地址空间是在哪个子系统下启动的。只有在操作员请求使用SETCON MONITORMONITOR JOBNAMES命令监视作业名称时,才会发出这些消息。自动化运维产品通常会这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接