Environment-Variables

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

  • December 7, 2020

通常我在 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

正如Thomas 所說,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

AIX 沒有提供與/procLinux 相同樣式的偽文件系統。參考手冊頁:

後者記錄了一個專用於環境的偽文件:

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

而前者描述了一個包含程序資訊的文件

psinfo

包含有關ps命令所需的程序的資訊。如果程序包含多個執行緒,則使用一個代表執行緒來導出lwpsinfo資訊。該文件被格式化為一種**struct psinfo**類型並包含以下成員:

尤其是:

prptr64_t pr_envp; /* 初始環境向量的地址
在使用者程序中 */

雖然可以編寫一個讀取該資料結構的腳本,但您不會只使用**grepor來執行此操作strings**:該地址將用於訪問記憶體映像文件:

as

包含程序的地址空間映像。as文件既可以打開也可以讀寫。該**lseek**子常式用於將文件定位在感興趣的虛擬地址處。之後,您可以分別使用 read 和 write 子程序查看和修改地址空間。

引用自:https://unix.stackexchange.com/questions/622471