Como obtenho o PID do meu processo principal (e não um de seus funcionários)?

2

Estou usando o CentOS 7. Estou tentando escrever um script para iniciar e parar um processo do puma, mas não consigo descobrir como obter o PID "mestre", se esse é o termo certo. No comando abaixo

[rails@server myproject_production]$ ps aux | grep puma
rails    15767  0.0  1.2 437904 13612 ?        Sl   17:20   0:00 puma 3.11.4 (tcp://0.0.0.0:3000,unix:///home/rails/myproject_production/shared/sockets/puma.sock) [myproject_production]
rails    15779  0.6  7.6 1061248 80688 ?       Sl   17:20   0:05 puma: cluster worker 1: 15767 [myproject_production]
rails    15781  0.6  7.7 1061248 80876 ?       Sl   17:20   0:05 puma: cluster worker 2: 15767 [myproject_production]
rails    15785  0.6  7.4 1061964 78488 ?       Sl   17:20   0:05 puma: cluster worker 3: 15767 [myproject_production]
rails    15880  0.7  7.4 1059612 78592 ?       Sl   17:22   0:05 puma: cluster worker 0: 15767 [myproject_production]
rails    17106  0.0  0.1 112612  1064 pts/0    S+   17:33   0:00 grep --color=auto puma

O mestre PID é "15767". Se eu matar, todos os outros processos do puma vão morrer. Como escrevo um comando para obter uma variável de script?

    
por Dave 09.05.2018 / 23:40

1 resposta

4

Use pgrep em vez de filtrar a saída de ps . Eu acho que no seu caso, pgrep -f '^([^ ]*/)?puma ' vai combinar com o processo certo, mas experimente um pouco para ter certeza de que você está conseguindo o que quer e não mais.

Quando estiver satisfeito que pgrep está encontrando o processo que deseja matar, substitua pgrep por pkill .

    
por 10.05.2018 / 00:04