如何在Linux中查找由另一个进程启动的所有进程

如何在Linux中查找由另一个进程启动的所有进程

我使用 web 脚本在基于 Linux 的操作系统(ubuntu、centos)上运行反恐精英服务器。我需要从 hlds_linux 进程中查找所有正在运行的进程(他启动了另外两个名为 hlds_run 的进程)

安全模式已关闭,我正在使用 shell_exec。我需要找到此进程并获取其 pid 才能将其终止。感谢您的帮助,抱歉我的英语不好,我来自保加利亚。

答案1

试试 perl,瑞士军用电锯。下面是我找到保持端口 80 开放的 PID,然后列出所有子进程:

[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

通过这种方式你就可以看到哪个进程创建了其他进程

相关内容