
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