ID do processo de um comando executado por um usuário

2

Considere que estou executando apenas alguns comandos básicos.

ls

Agora o comando acima teria um pid quando fosse executado? Se sim, então como posso determinar esse pid?

quando eu tento

echo $!

logo após o comando ls, retorna a saída vazia.

considerando que se eu executar

ls &

e depois

echo $!

agora ele me dá o comando pid de ls.

Na verdade eu tenho essa pergunta quando eu estava olhando os logs abaixo auditd ..

type=USER_CMD msg=audit(12/16/2014 17:15:36.201:68342) : user pid=19247 uid=enginst auid=enginst ses=4229 msg='cwd=/apps/oradump/ora_temp_rdbms/OH3 cmd=chmod -R 777 11203 terminal=pts/2 res=success'
type=USER_CMD msg=audit(12/16/2014 17:36:33.968:68753) : user pid=1801 uid=enginst auid=enginst ses=4229 msg='cwd=/apps/oracle/RDBMS cmd=chmod -R 777 11203 terminal=pts/2 res=success'

Aqui, o log acima diz que "chmod -R 777" foi executado pelo usuário enginst e também há um pid.

Agora, posso concluir que o comando chmod foi executado explicitamente pelo usuário, uma vez que os logs auditd não mostram o ppid (id do processo pai), o que seria o caso se algum script / programa o iniciasse? / p>

No entanto, eu ativei o processo de contabilidade agora para verificar o acima. Mas de qualquer forma, a minha pergunta está ...

comandos como chmod, ls recebe um pid quando é executado? ou não? ou recebe um pid quando é executado em segundo plano, enquanto não está em primeiro plano?

    
por Being Gokul 18.12.2014 / 12:59

1 resposta

1

Todo comando externo e cada subshell possui seu próprio PID. Os integrantes da shell não têm um.

Não tenho conhecimento de nenhum recurso que forneça o PID do comando síncrono recém-saído. Claro, você pode executar todos os comandos desta maneira:

command & pid=$!; fg
    
por 18.12.2014 / 13:28