AIX + mkssys stdout 到我自己的文件 = 始终为空文件

AIX + mkssys stdout 到我自己的文件 = 始终为空文件

我曾经mkssys -s service -p $BIN -u 0 -S -n15 -f9 -o /var/log/stdout -e /var/log/stderr指定自己的控制台和错误日志文件,它们总是空的(尽管文件本身是自动创建的)。并抱怨:

alog -t /var/log/console -o 0526-003 alog: /var/log/console 不是 alog 类型。

如果我将其发送到 /dev/console,那么如果我这样做

alog -f /var/adm/ras/conslog -o:

我得到了我想要捕获的段错误。在控制台中,我看不到是什么进程导致了错误。

捕获信号 = 0 Sun Jun 28 17:36:39 CDT 2020 11 0 Sun Jun 28 17:36:39 CDT 2020 ,代码 = 0 Sun Jun 28 17:36:39 CDT 2020 4569529040 0 Sun Jun 28 17:36:39 CDT 2020,退出应用程序 0 Sun Jun 28 17:36:39 CDT 2020 +++并行工具联盟轻量级核心文件格式版本 1.0 0 Sun Jun 28 17:36:39 CDT 2020 +++LCB 1.0 Sun Jun 28 17:36: 39 2020 由 IBM AIX 7.2 0 Sun Jun 28 17:36:39 CDT 2020 # +++ID Node 0 Process 5243226 Thread 2 0 Sun Jun 28 17:36:39 CDT 2020 ***故障“SIGSEGV - 分段违规” 0 2020 年 6 月 28 日星期日 17:36:39 CDT 2020 +++STACK 0 2020 年 6 月 28 日星期日 17:36:39 CDT __fd_poll : 0x000000b4 0 2020 年 6 月 28 日星期日 17:36:39 CDT _ZN6apache6thrift9transport13TServerSocket10acceptImplEv : 0 x0000007c 0 六月 28 日星期日 17:36 :39 CDT 2020 _ZN6apache6thrift6server16TServerFramework5serveEv : 0x000002d4 0 六月 28 日星期日 17:36:39 CDT 2020 _ZN6apache6thrift6server15TThreadedServer5serveEv : 0x00000020 0 六月 28 日星期日 17:36:39 CDT 2020 _ZN5utils6thrift6Server5ServeEv : 0x0000002c 0 星期日 6 月 28 日 17:36:39 CDT 2020 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIMN5utils6thrift6ServerEFvvEEPS5_EEE6_M_runEv : 0x0000 0078 0 6月28日星期日17:36:39 CDT 2020execute_native_thread_routine:0x00000040 0 6月28日星期日17:36:39 CDT 2020 _pthread_body:0x000000e8 0 6月28日星期日17:36:39 CDT 2020 ---STACK 0 6月28日17日: 36: 39 CDT 2020 ---ID 节点 0 进程 5243226 线程 2 0 Sun Jun 28 17:36:39 CDT 2020 # +++ID 节点 0 进程 5243226 线程 1 0 Sun Jun 28 17:36:39 CDT 2020 +++STACK 0 Sun Jun 28 17:36:39 CDT 2020 # 在位置 0x0000000000000000 但程序信息不可用。 0 Sun Jun 28 17:36:39 CDT 2020 ---STACK 0 Sun Jun 28 17:36:39 CDT 2020 ---ID 节点 0 进程 5243226 线程 1 0 Sun Jun 28 17:36:39 CDT 2020 --- LCB

如何将段错误消息捕获到文件中?谢谢

这个问题似乎很相关:AIX 服务日志记录

答案1

  • 除非您的程序正在写入 alog(即使用 alog 机制来写入它们) - 忘记alog.
  • 在 AIX 上,有一个内置机制可以转移/复制写入/dev/consolealog -t 控制台的所有信息
  • -omkssys和 -e 参数是常规文件。由您的应用程序实际写入这些文件中的任何一个。您的应用程序/服务确定信息是文本还是二进制。
  • 至于识别存在段错误的进程 - 可能会报告给errpt.我知道核心转储通常是这样,所以我希望段错误也在那里注册。
  • 以下是一份报告的示例errpt。注意信号数量程序名称
---------------------------------------------------------------------------
LABEL:          CORE_DUMP
IDENTIFIER:     A924A5FC

Date/Time:       Thu Feb 24 21:48:27 CUT 2022
Sequence Number: 1754
Machine Id:      00FAC25F4B00
Node Id:         aix2
Class:           S
Type:            PERM
WPAR:            Global
Resource Name:   SYSPROC

Description
SOFTWARE PROGRAM ABNORMALLY TERMINATED

Probable Causes
SOFTWARE PROGRAM

User Causes
USER GENERATED SIGNAL

        Recommended Actions
        CORRECT THEN RETRY

Failure Causes
SOFTWARE PROGRAM

        Recommended Actions
        RERUN THE APPLICATION PROGRAM
        IF PROBLEM PERSISTS THEN DO THE FOLLOWING
        CONTACT APPROPRIATE SERVICE REPRESENTATIVE

Detail Data
SIGNAL NUMBER
          11
USER'S PROCESS ID:
              18612646
FILE SYSTEM SERIAL NUMBER
           1
INODE NUMBER
                     2
CORE FILE NAME
//core
PROGRAM NAME
ksh

希望这可以帮助。

相关内容