linux根据进程id查看进程

等等,这就是我侄子上周帮他修电脑时用的。

他的旧 ThinkPad 安装了 Windows 1 0,运行起来就像一辆老爷车。
屏幕上飘着几个小窗口,他问我是否还有其他几个程序。
我在他的电脑上输入了一份待办事项清单,一切都在一瞬间就出来了。
他指着像广场舞一样运行CPU的“svchost.exe”,问我这是什么。

我看了看时间,下午三点左右,他的电脑已经热到可以煎鸡蛋了。
我让他输入Taskkill /F /IM svchost.exe并强制关闭几个服务。
果然,CPU 立刻就变慢了很多。
他称这是一个奇迹,并问我这是怎么发生的。

我说了,这个东西要看进程ID。
我使用Windows自带的任务管理器,点击svchost.exe文件,右键“Go”,然后“Go to Details”,PID就在那里。
输入 Taskkill /F /PID XXXX,其中 XXX 是 PID 号。
他尝试过,并且成功了。

但是他电脑上的svchost.exe文件又出现了,而且这次CPU没那么高了。
我让它再检查一下,发现旁边也运行着“Windows Search”。
我告诉他,有时 Windows 会自行出错,当你关闭它时,它又会重新出现。
他挠了挠头,说怎么办。

我突然想到他的系统可能中毒了。
我让他用杀毒软件扫描一下,果然发现了很多病毒文件。
删除病毒后,svchost.exe 停止工作。
这时我才意识到,有时候并不是系统慢,而是里面有坏东西造成了问题。

他问:Linux也一样吗?我差点就说出来了。
不过,Linux 命令行的功能更强大。
就像 ps aux | 一样刚才提到了grepprocess_name,你可以一目了然地找到所有进程,哪些正在运行,哪些正在休眠。
如果您想了解更详细的信息,例如哪个进程正在窃取您的网络速度,只需 sudo lsof | grep 8 0 看看哪个程序正在监听8 0端口。

他有点困惑,说Windows界面看起来简单,但实际上Linux命令行功能强大得多。
我说可以,但是也很难学。
就像修电脑的时候,可以用螺丝刀来修,也可以用焊枪来修,但是你得明白原理,不然好办与不好的事情。

他叹了口气,说我以后一定要学Linux。
我说,慢慢来,从 ls 和 cd 开始。

这时,他的手机响了。
他的女朋友催促他回家吃饭。
他赶紧关掉命令行,说我先走了。
我看着他的背影,突然觉得修电脑其实就像过着正常的生活一样。
有时候看似简单,但里面却蕴藏着很多技巧。

linux怎么查看进程号并杀死进程

说实话,Linux中要杀掉一个进程,首先得知道它长啥样,也就是PID。
我以前也曾陷入过这个陷阱。
我尝试终止一项服务,但最终挂起所有系统进程。
后来我才明白该怎么做。

首先我们来谈谈PID。
如果您知道端口号(例如 1 5 00),请键入 lsof -i :1 5 00。
上次我检查 Web 服务器时,我将其放入终端,立即 PID 为 7 8 2 9 如果系统上未安装 lsof,则 netstat -ntlp | grep 1 5 00 选择结果中包含 PID 的行。
但该方法比lsof慢,适合端口较多的情况。

如果有一个类似server.py ps aux | 的程序名称grep 服务器.py。
上次我看 Django 项目时,屏幕上全是 grep 进程,我必须睁开眼睛才能找到状态栏。
注意STAT。
如果看到 S 或 Sl,则说明工作正常。
如果USER列中的数字ID很长,不要惊慌,它会被系统自动截断,不会受到影响。

杀戮过程需要策略。
尝试先杀死它(PID),例如kill 7 8 2 9 上次我杀死节点服务时,该服务在我第一次使用此命令时自行停止。
如果这不起作用,请使用最后一招kill -9 (PID)。
这是一种残酷的方法。
上次java进程卡住了,我不得不使用kill -9 来恢复它。
但说实话-9 很容易丢失数据,所以尽量不要使用。

杀死后你必须检查。
我ps aux |我习惯了跑步。
grep server.py 几次以查看 PID 是否确实丢失。
有时端口还没有释放,你必须使用lsof再次检查。
上次我杀了mysqld,虽然进程被杀了,但是端口还是挂着。
最后,我不得不使用 lsof -i:3 3 06 将其彻底杀死。

说到扩展点,我经常使用 ll/proc/PID/exe 来查看哪个进程执行。
有一次系统意外崩溃。
我检查了日志,发现某个脚本有问题。
我用这个方法找到了脚本路径,改了代码,系统马上就回来了。
还有pkill,pkill -9 -f server.py 可以直接按名字杀掉,不过要小心,我上次杀掉了系统自带的sshd。

但是话虽如此,如果过度使用这些命令可能会很棘手。
一我有一个朋友,是系统管理员,他在恶意进程中按错了键,导致整个系统重新启动。
那一刻,他的脸都绿了。
因此,在做这些任务时,必须先了解PID,然后再思考结果。
不要不耐烦。

Linux如何查看指定端口对应的进程

说到检查Linux系统上的哪个进程获得了某个端口,这在我参加问答论坛的十年中确实很常见。
说实话,一开始用netstat和lsof两个命令来解决这类问题。

例如,如果您想知道哪个进程正在使用端口 8 0,只需使用 sudo netstat -tulnp | grep : 8 0 并退出? PID和程序的名称一目了然。
记得有一次,我帮弟弟解决了一个难题。
突然nginx服务卡住了。
我用这个方法一看,哎,原来是端口在一个相邻进程忙。

还有lsof命令,更准确。
使用 sudo lsof -i:8 0。
输出中的 PID 和 JUSSU 字段将直接告诉您正在使用哪个进程。
我也经常使用这个方法,有时比netstat更直观。

当然如果权限有点关的话就需要加sudo。
有时端口可能处于TIME_WAIT或CLOSE_WAIT状态,导致进程崩溃或退出。
这时候就得等待系统自动解决,或者调整内核参数,但一般不建议这样做。

现在,netstat 被 ss 命令取代,特别是在较新的 Linux 发行版中。
ss 命令在处理大量连接方面更快、更好。
记得有一次,我帮助客户效率很高,使用了ss命令,效率提高了很多。

作为独立的网络空间,例如使用Docker容器,主机上的netstat或lsof无法看到容器内的进程。
此时,您可以输入相应的命名空间来执行命令,或者使用容器管理工具的视图。

要终止端口捕获进程,必须首先找到PID。
我用 sudo lsof -i:8 0 找到PID,使用kill命令终止进程。
一般来说,我建议先发送带有kill 1 2 3 4 的SIGNAL信号,以优雅地启动进程。
如果你想终止,你必须小心使用kill。
该进程直接终止,数据丢失。
最后还有ss、nmap、tcpdump等其他工具,以及firewall-cmd、ufw等防火墙管理工具,这些都是网络管理的强大工具。

总的来说,这些方法都非常实用,可以帮助你有效地定位和管理Linux系统上的端口占用问题。
当然,使用该工具的原因取决于实际情况和需求。