Como encontrar todo processo iniciado por outro no linux

Como encontrar todo processo iniciado por outro no linux

Eu executo servidores Counter-Strike em sistemas operacionais baseados em Linux (ubuntu, centos) por script web. Preciso encontrar todos os processos em execução do processo hlds_linux (ele iniciou outros dois com o nome hlds_run)

O modo de segurança está desativado e trabalho com shell_exec. Preciso encontrar esse processo e obter o pid dele para matá-los. Obrigado por qualquer ajuda e desculpe pelo meu inglês, sou da Bulgária.

Responder1

Experimente perl, a motosserra do exército suíço. Aqui estou eu encontrando o PID que mantém a porta 80 aberta e listando todos os filhos:

[me@lory ~]$ sudo netstat -apn|grep -w 80|grep LISTEN
tcp        0      0 :::80                       :::*                        LISTEN      8308/httpd          
[me@lory ~]$ ps -ef|perl -n -e  '@j=split /  */; print "@j" if ( @j[2]==8308) ; '
apache 9235 8308 0 Dec05 ? 00:01:49 /usr/sbin/httpd
apache 10040 8308 0 Dec08 ? 00:00:41 /usr/sbin/httpd
apache 10477 8308 0 Dec07 ? 00:01:13 /usr/sbin/httpd
apache 10478 8308 0 Dec07 ? 00:01:21 /usr/sbin/httpd
apache 10658 8308 0 Dec08 ? 00:00:29 /usr/sbin/httpd
apache 10662 8308 0 Dec08 ? 00:00:26 /usr/sbin/httpd
apache 10666 8308 0 Dec08 ? 00:00:28 /usr/sbin/httpd
apache 10668 8308 0 Dec08 ? 00:00:35 /usr/sbin/httpd
apache 12694 8308 0 Dec06 ? 00:01:39 /usr/sbin/httpd
apache 12695 8308 0 Dec06 ? 00:01:43 /usr/sbin/httpd
apache 12696 8308 0 Dec06 ? 00:01:39 /usr/sbin/httpd
apache 18671 8308 0 08:41 ? 00:00:18 /usr/sbin/httpd
apache 21585 8308 0 Dec08 ? 00:00:42 /usr/sbin/httpd
apache 22010 8308 0 Dec05 ? 00:01:33 /usr/sbin/httpd
apache 22011 8308 0 Dec05 ? 00:01:49 /usr/sbin/httpd
apache 22012 8308 0 Dec05 ? 00:01:36 /usr/sbin/httpd

Se você quiser apenas os PIDs:

[me@lory ~]$ ps -ef|perl -n -e  '@j=split /  */; print "@j[1]\n" if ( @j[2]==8308) ; '
9235
10040
10477
10478
10658
10662
10666
10668
12694
12695
12696
18671
21585
22010
22011
22012

Responder2

Você pode usar pkill(homem) para eliminar todos os processos por nome.

Responder3

use ps auxf como eu disse no meu comentário anterior, você pode ver uma saída como segue

 root     13728  0.0  0.0 187448  6408 ?        Ss   16:59   0:00 /usr/sbin/httpd2-prefork -f   /etc/apache2/httpd.conf
 wwwrun   13730  0.2  0.2 197868 17272 ?        S    16:59   0:03  \_ /usr/sbin/httpd2-prefork -f   /etc/apache2/httpd.conf
 wwwrun   13732  0.3  0.2 197116 16548 ?        S    16:59   0:04  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   13733  0.2  0.2 197888 17292 ?        S    16:59   0:03  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   13734  1.0  0.2 198936 18204 ?        S    16:59   0:15  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   13814  1.0  0.2 198164 17532 ?        S    16:59   0:14  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   14205  0.2  0.2 198288 17668 ?        S    17:03   0:02  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   14206  0.3  0.2 197892 17292 ?        S    17:03   0:04  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   14207  0.2  0.2 198980 17984 ?        S    17:03   0:02  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   14208  0.3  0.2 198188 17584 ?        S    17:03   0:04  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
 wwwrun   17125  0.2  0.2 197828 16872 ?        S    17:21   0:00  \_ /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf

Desta forma você pode ver qual processo criou outro processo

informação relacionada