Por que o uname -M está retornando uma string vazia?

3

Na mesma máquina (AIX 6.1), em 2 shells de login diferentes (ambos ksh), com IDs de usuário diferentes, posso fazer uname -M ; em um shell eu recebo o modelo do sistema. No outro shell eu fico em branco! A única diferença é o ID do usuário e, portanto, o ambiente. Eu não posso colocar o ambiente aqui.

Exemplo de usuário 1 Shell:

$ uname -M
IBM,1234-567
$

Exemplo de usuário 2 Shell:

$ uname -M

$

Eu fiz uma treliça em ambos os shells. Há uma diferença, mas não entendo. Aqui está a má treliça:

truss uname -M
.. a bunch of execve's ripped out as it was searching the PATH for uname.
execve("/bin/uname", 0x2FF2155C, 0x20012EF8)     argc: 2
__loadx(0x03480000, 0x2FF21380, 0x00000108, 0xF0713968, 0x20000CD0) = 0x00000000
__loadx(0x0A040000, 0xD042D064, 0x0000008A, 0x20001254, 0x00000000) = 0x00000000
sbrk(0x00000000)                                = 0x200013D0
vmgetinfo(0x2FF20530, 7, 16)                    = 0
sbrk(0x00000000)                                = 0x200013D0
__libc_sbrk(0x00000000)                         = 0x200013D0
getuidx(4)                                      = 28633
getuidx(2)                                      = 28633
getuidx(1)                                      = 28633
getgidx(4)                                      = 100
getgidx(2)                                      = 100
getgidx(1)                                      = 100
getuidx(4)                                      = 28633
getuidx(2)                                      = 28633
getuidx(1)                                      = 28633
getgidx(4)                                      = 100
getgidx(2)                                      = 100
getgidx(1)                                      = 100
__loadx(0x01480080, 0x2FF1FEF0, 0x00000A50, 0x2FF20A60, 0x2FF22ED1) = 0xD0538128
__loadx(0x01480180, 0x2FF1FEF0, 0x00000A50, 0xF068921C, 0xF068914C) = 0xF0759FA0
__loadx(0x07080000, 0xF06891EC, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF3C
__loadx(0x07080000, 0xF068912C, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF48
__loadx(0x07080000, 0xF06891FC, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF78
__loadx(0x07080000, 0xF068913C, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF84
__loadx(0x07080000, 0xF06891BC, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF54
__loadx(0x07080000, 0xF068915C, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF6C
__loadx(0x07080000, 0xF06891CC, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AF90
__loadx(0x07080000, 0xF06891DC, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AFC0
__loadx(0x07080000, 0xF068916C, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075AFA8
__loadx(0x07080000, 0xF068917C, 0xFFFFFFFF, 0xF0759FA0, 0x00000000) = 0xF075B020
getuidx(4)                                      = 28633
getuidx(2)                                      = 28633
getuidx(1)                                      = 28633
getgidx(4)                                      = 100
getgidx(2)                                      = 100
getgidx(1)                                      = 100
__loadx(0x01480080, 0x2FF1FEF0, 0x00000A50, 0x2FF20A60, 0x2FF22ED1) = 0xD0538128
getuidx(4)                                      = 28633
getuidx(2)                                      = 28633
getuidx(1)                                      = 28633
getgidx(4)                                      = 100
getgidx(2)                                      = 100
getgidx(1)                                      = 100
__loadx(0x01480080, 0x2FF1FEF0, 0x00000A50, 0x2FF20A60, 0x2FF22ED1) = 0xD0538128
getuidx(4)                                      = 28633
getuidx(2)                                      = 28633
getuidx(1)                                      = 28633
getgidx(4)                                      = 100
getgidx(2)                                      = 100
getgidx(1)                                      = 100
__loadx(0x01480080, 0x2FF1FEF0, 0x00000A50, 0x2FF20A60, 0x2FF22ED1) = 0xD0538128
getuidx(4)                                      = 28633
getuidx(2)                                      = 28633
getuidx(1)                                      = 28633
getgidx(4)                                      = 100
getgidx(2)                                      = 100
getgidx(1)                                      = 100
__loadx(0x01480080, 0x2FF1FEF0, 0x00000A50, 0x2FF20A60, 0x2FF22ED1) = 0xD0538128
access("/usr/lib/nls/msg/en_US/uname.cat", 0)   = 0
_getpid()                                       = 7405946
uname(0x2000132C)                               = 0
statx("CuAt", 0x2FF20870, 76, 0)                Err#2  ENOENT
kopen("CuAt", O_RDONLY)                         Err#2  ENOENT
kioctl(1, 22528, 0x00000000, 0x00000000)        = 0

kwrite(1, "\n", 1)                              = 1
__loadx(0x04000000, 0x2FF20970, 0x00000800, 0x0000D032, 0x00000000) = 0x00000000
kfcntl(1, F_GETFL, 0x00000001)                  = 67110914
kfcntl(2, F_GETFL, 0x2FF22FFC)                  = 67110914
_exit(0)

Você pode ver que kwrite no final é apenas imprimir um caractere de nova linha, "\n" .

Na boa saída de treliça, parece que o uname está obtendo o atributo de:

/etc/objrepos/CuAt

Isso me leva ao lsattr command e outros .

Por que é uname -M em branco? Quais variáveis de ambiente afetariam isso?

    
por Jess 19.04.2013 / 22:32

1 resposta

1

Eu entendi. Eu estava varrendo o ambiente 'bom' e vi este env var:

export ODMDIR=/etc/objrepos

Sabendo que a 'boa treliça' estava procurando aqui o número do modelo da máquina, executei este comando no shell defeituoso e agora é uname -M funciona:

$ uname -M
IBM,1234-567

Desculpe, não publiquei o ambiente, mas ele é enorme e contém muitas informações confidenciais.

    
por 22.04.2013 / 15:37