Encontre a fonte de um processo * nix?

1

Eu tenho um servidor da web dev e QA em execução no mesmo EC2. Eu criei um script de shell (que é chamado via Cron) para verificar se um processo está sendo executado e se não, reinicie-o.

Script de shell:

#!/bin/bash

process="php"
makerun="/usr/bin/php /var/www/html/api/artisan queue:work --queue=high,default --memory=512"


if ps ax | grep -v grep | grep $process > /dev/null
then
  exit
else
  $makerun &>/dev/null &
fi

exit

Isso tudo funciona bem e ótimo, mas agora é hora de iniciar o worker para nosso servidor de QA (o acima é o dev) e obviamente ele não fará nada, pois o nome do processo será o mesmo em ambos os casos.

Dito isto, alguém sabe de uma maneira de determinar o que invocou o processo? Se eu soubesse que um foi iniciado a partir do caminho do desenvolvedor, eu poderia reescrever o script bash para ser muito mais inteligente e, por sua vez, monitorar o processo para o dev e o QA.

Qualquer ideia seria apreciada!

    
por Nicholas Kreidberg 14.09.2018 / 23:58

1 resposta

1

Não sei se entendi seu problema corretamente:

Nos meus sistemas Linux, ps ax (ou ps -Alf ) já mostra o caminho completo do executável que foi usado para iniciar o respectivo processo (pelo menos em muitos casos). Você poderia usar isso?

Por exemplo, em uma caixa com o Debian Stretch (trecho):

root@charon:~# ps -Alf
4 S message+   447     1  0  80   0 - 11283 SyS_ep Aug31 ?        00:00:00 /usr/bin/dbus-daemon --system --address=syste
4 S root       468     1  0  80   0 - 11625 SyS_ep Aug31 ?        00:00:03 /lib/systemd/systemd-logind
4 S root       674     1  0  80   0 -  3634 core_s Aug31 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
4 S root       708     1  0  80   0 - 17486 core_s Aug31 ?        00:00:00 /usr/sbin/sshd -D
5 S ntp        712     1  0  80   0 - 24467 core_s Aug31 ?        00:00:36 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 109

Assim, para obter o caminho completo, você teria que grep a última parte de cada linha, por exemplo:

root@charon:~# ps -Alf|awk '{print $15}'
/usr/bin/dbus-daemon
/lib/systemd/systemd-logind
/sbin/agetty
/usr/sbin/sshd
/usr/sbin/ntpd
    
por 17.09.2018 / 20:06