
我透過 Web 腳本在基於 Linux 的作業系統(ubuntu、centos)中執行 Counter-Strike 伺服器。我需要從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
這樣你就可以看到哪個進程創建了其他進程