AIX 中等效的 /proc/process_pid/environ 文件是什么?

AIX 中等效的 /proc/process_pid/environ 文件是什么?

通常我在 Linux 中使用string -a命令查看该文件。

AIX 有类似的东西吗?我没有找到任何东西/proc/pid_process

我使用此文件来了解某个进程正在查看哪些环境变量。

例如,我在服务器上安装了 Oracle 数据库。如果我想知道pmon进程正在查看什么环境变量,我可以找到该进程:

[root@oracle-database 1664]# ps aux|grep pmon|grep -v grep
oracle    8897  0.0  0.5 1133456 5312 ?        Ss   Nov27   0:18 ora_pmon_idbcloud
[root@oracle-database 1664]#

并查看文件/proc/process_pid/environ

[root@oracle-database 1664]# strings -a /proc/8897/environ
XDG_SESSION_ID=4689
HOSTNAME=oracle-database
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
USER=oracle
ORACLE_SID=idbcloud
ORACLE_BASE=/u01/app/oracle
MAIL=/var/spool/mail/oracle
PATH=
PWD=/u01
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/home/oracle
LOGNAME=oracle
LESSOPEN=||/usr/bin/lesspipe.sh %s
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
NLS_DATE_FORMAT=DD/MM/YYYY HH24:MI:SS
_=/bin/rlwrap
OLDPWD=/u01
ORA_NET2_DESC=9,12
SKGP_SPAWN_DIAG_POST_FORK_TS=1606503159
SKGP_HIDDEN_ARGS=<FATAL/S/PMON/x0/x1/x0/x5AF86E15/8888/8888/x0/x2/x1/x5AF86E38/1606503159/1606503159/196609/0/(nil)>
SKGP_SPAWN_DIAG_PRE_FORK_TS=1606503159
SKGP_SPAWN_DIAG_PRE_EXEC_TS=1606503159
ORACLE_SPAWNED_PROCESS=1
RDMAV_FORK_SAFE=1
RDMAV_HUGEPAGES_SAFE=1

答案1

AIX 不提供与/procLinux 相同风格的伪文件系统。参考手册页:

后者记录了一个专用于环境的伪文件:

   /proc/[pid]/environ
          This file contains the initial environment that was set when
          the currently executing program was started via execve(2).

而前者描述了一个包含进程信息的文件

个人信息
包含有关所需流程的信息附注命令。如果进程包含多个线程,则使用一个代表线程来派生日志信息信息。该文件的格式为struct psinfo类型并包含以下成员:

尤其:

prptr64_t pr_envp; /* 初始环境向量的地址
                                       在用户进程中*/

虽然可以写一个脚本它读取该数据结构,你不会仅仅用它来做到这一点grep或者strings:该地址将用于访问内存映像文件:

作为
包含进程的地址空间映像。这作为文件可以以读取和写入的方式打开。这lseek子例程用于将文件定位到感兴趣的虚拟地址。然后,您可以分别使用读子例程和写子例程查看和修改地址空间。

答案2

作为托马斯说,没有文件在 AIX 系统中,但是ps命令 让你“知道某个进程正在看到什么环境变量”

e
    Displays the environment as well as the parameters to the command, up to a limit of 80 characters.
ew
     Wraps the display from the e flag one extra line.
eww
     Wraps the display from the e flag and displays the ENV list until the flag reaches the LINE_MAX value.
ewww
     Wraps the display from the e flag and displays the ENV list until the flag reaches the INT_MAX value.

例如:

$ ps ewww 1835516
      PID    TTY STAT  TIME COMMAND
  1835516      - A     7:02 /usr/sbin/syncd 60 _=/usr/bin/nohup LANG=C PATH=/usr/sbin:/etc:/usr/bin LC__FASTMSG=true ODMDIR=/etc/objrepos HOME=/ PWD=/ CFGLOG=default NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat LIBPATH=/usr/lib:/lib

相关内容