Как найти все процессы, запущенные другим процессом в Linux

Как найти все процессы, запущенные другим процессом в Linux

Я запускаю Counter-Strike серверы в ОС на базе Linux (Ubuntu, Centos) с помощью веб-скрипта. Мне нужно найти все запущенные процессы из процесса hlds_linux (он запустил еще два с именем hlds_run)

Безопасный режим выключен, и я работаю с shell_exec. Мне нужно найти этот процесс и получить его pid, чтобы можно было их убить. Спасибо за любую помощь и извините за мой английский, я из Болгарии.

решение1

Попробуйте perl, швейцарскую армейскую бензопилу. Вот как я нахожу PID, который держит порт 80 открытым, а затем перечисляю всех дочерних процессов:

[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

Если вам нужны только PID:

[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

решение2

Вы можете использовать pkill(мужчина) для завершения всех процессов по имени.

решение3

используйте ps auxf, как я уже говорил в предыдущем комментарии, и вы увидите следующий вывод

 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

Таким образом, вы можете увидеть, какой процесс создал другие процессы.

Связанный контент