Como posso verificar se um processo está executando um script de shell?

0

Dado um processo pid, como posso

  • verifique se o processo está executando um script de shell?

  • se sim, como posso obter o (s) processo (s) filho (s) que o script está executando? por pgrep -P <pid> ?

Obrigado.

    
por Tim 28.07.2018 / 03:25

1 resposta

0

Quando você executa um script de shell, ele inicia um processo conhecido como subshell. Como um processo filho do shell principal, um subshell executa uma lista de comandos em um script de shell como batch (o chamado "processamento em lote").

Em alguns casos, você pode querer saber o ID do processo (PID) do subshell onde seu script de shell está sendo executado.

No bash, o PID do processo de sub-shell de um script de shell é armazenado em uma variável especial chamada '$$'. Essa variável é somente leitura e você não pode modificá-la em um script de shell. Por exemplo:

$ cat xyz.sh
#!/bin/bash
echo "PID of this script: $$"

Qual é a saída a seguir

PID of this script: XXXX

O bash shell exporta várias outras variáveis somente leitura. Por exemplo, o PPID armazena o ID do processo pai do subshell (isto é, shell principal). O UID armazena o ID do usuário atual que está executando o script. Assim (apenas exemplo)

#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $

O que dá a saída

PID of this script: XXXX 
PPID of this script: XXXX 
UID of this script: XXXX
    
por 28.07.2018 / 04:13

Tags