
Я запускаю 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
Таким образом, вы можете увидеть, какой процесс создал другие процессы.